Erreur conversion Visual 2005
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
Citation:
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
]
La classe qui semble poser problème est la suivante :
Code:
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 |
Une idée??