hash_map mit CString als Key unter VS 2003



  • Hallo!

    Ich habe folgendes Problem: nach einer Umstellung von Visual Studio .net 2002 auf Visual Studion .net 2003 compiliert Code mit Hash-Maps nicht mehr.

    hash_map<CString, int> urlMap;
    

    Die compare-Funktion hatte ich so überschrieben:

    namespace std
    {
    	template <>
    	size_t hash_compare<CString>::operator()(const CString& s)const
    	{
            unsigned long l = 0;
            const char* p = s;
            while (*p) l = 5*l + *p++;
            return l;
    	}
    }
    

    Unter VS 2002 lief das noch einwandfrei, jetzt kommt folgender Fehler in der Datei <xhash> :

    c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\xhash(72): error C2440: 'type cast' : cannot convert from 'const CString' to 'size_t'

    Anscheinend wird die Compare-Funktion nicht richtig überschrieben 😕
    Oder der Fehler liegt ganz woanders... 😞

    Vielleicht weiss jemand Rat, ich bin für jede Hilfe sehr dankbar! 😉

    PS: Ja, ich weiss: STL und MFC gehören nicht zusammen. Der Code wurde aber von verschiedenen Personen erstellt, und eine Änderung z.B. von der hash_map zur CStringMap oder von CString zu STL::String ist mittlerweile nur noch mit sehr großem Aufwand möglich. Zumal alle anderen Datenstrukturen auch auf der STL basieren... bei folgenden Projekten werden wir da mehr drauf achten. :p


Anmelden zum Antworten