Pour simplifier ce problème, j'ai créé un nouveau projet MPF dans Visual Studio par Wizard. Je voudrais utiliser CAtlMap
avec CString
comme paramètre clé. J'inclus <atlcoll.h>
tête et quand j'ai essayé de compiler le code suivant:CAtlMap utilise CString comme une clé
CAtlMap<CString, double> myMap;
CString strMyKey = L"MyKey";
myMap.SetAt(strMyKey, 76.8);
J'ai reçu cette erreur:
'<function-style-cast>' : cannot convert from 'const CString' to 'ULONG_PTR'
Quand je les types simples (par exemple int
) au lieu de CString
projet a été compilé sans les erreurs. Est-il possible d'utiliser CString
comme dans l'exemple ci-dessus? Peut-être que j'ai raté certains fichiers d'inclusion, que dois-je utiliser?
Je dois utiliser 'CAtlMap', parce que je travaille avec un ancien projet et c'est la condition principale. J'ai déplacé quelques classes d'une bibliothèque (dll) à une autre et cette classe s'est arrêtée pour se compiler. J'essaie de réparer les fichiers déplacés. – rgb
Essayez 'CAtlMap> map;' –
Il n'y a rien dans les en-têtes ou MSDN qui indique que CAtlMap est obsolète. En fait, il a été créé après CMAP (ATL est beaucoup plus récent que MFC) et CMap n'est pas disponible dans ATL sauf si vous incluez les en-têtes MFC. Les programmes ATL DEVRAIENT utiliser CAtlMap, les applications MFC peuvent choisir. Vous aurez besoin des traits de chaîne car MFC utilise une spécialisation de CString qui n'est pas compatible avec les collections d'ATL. –