Je viens de convertir un projet Visual 2003 en 2005.
Le projet compilait sans problème sous visual 2003.
Après conversion, j'ai l'erreur suivante
La classe qui semble poser problème est la suivante :c:\program files\microsoft visual studio 8\vc\atlmfc\include\atlcom.h(5017) : error C2664: '_CopyVarMapToVariant::copy'*: impossible de convertir le paramètre 2 de 'const std::pair<_Ty1,_Ty2> *' en 'std::pair<_Ty1,_Ty2> *'
with
[
_Ty1=const ATL::CAdapt<ATL::CComVariant>,
_Ty2=ATL::CComVariant
]
La conversion perd les qualificateurs
c:\program files\microsoft visual studio 8\vc\atlmfc\include\atlcom.h(5004)*: lors de la compilation de la fonction membre '<Inconnu>' de la classe <Inconnu>
c:\dev\components\msconfig\com\fielditem.h(20)*: voir la référence à l'instanciation de la classe modèle 'ATL::IEnumOnSTLImpl<Base,piid,T,Copy,CollType>' en cours de compilation
with
[
Base=IEnumVARIANT,
piid=& IID_IEnumVARIANT,
T=VARIANT,
Copy=_CopyVarMapToVariant,
CollType=VarMap
]
Une idée??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #ifndef __Enumtypes__HH__ #define __Enumtypes__HH__ #include <map> typedef std::map<CAdapt<CComVariant>, CComVariant> VarMap; class _CopyVarMapToVariant { public: static HRESULT copy(VARIANT* pCopy, std::pair<const CAdapt<CComVariant>, CComVariant>* pIt) { CComVariant v = pIt->second; v.Detach(pCopy); return S_OK; } static void init(VARIANT* p) {VariantInit(p);} static void destroy(VARIANT* p) {VariantClear(p);} }; typedef IEnumOnSTLImpl<IEnumVARIANT, &IID_IEnumVARIANT, VARIANT, _CopyVarMapToVariant, VarMap> VarEnumImpl; #endif
Partager