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