Je tente de créer un CList avec un pointeur intelligent COM (une des classes wrapper générées pour _com_ptr_t
) comme paramètre de modèle:Est-il possible d'utiliser des pointeurs intelligents COM avec la collection CList
CList<IDispatchPtr, IDispatchPtr> list;
Cependant, je reçois plusieurs erreurs de compilation similaires à:
error C2664: 'void __stdcall SerializeElements(class CArchive &,class _com_ptr_t<class _com_IIID<struct IDispatch,&struct __s_GUID _GUID_00020400_0000_0000_c000_00000000004 6> > *,int)' : cannot convert parameter 2 from 'struct IDispatch ** ' to 'class _com_ptr_t<class _com_IIID<struct IDispatch,&struct __s_GUID _GUID_00020400_0000_0000_c000_000000000046> > *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Il compile lors de l'utilisation des pointeurs réguliers :
CList<IDispatch*, IDispatch*> list;
En regardant le code MFC qui appelle SerializeElements il semble que le problème est qu'il faut un * TYPE et il n'y a pas de conversion entre IDispatch** and IDispatchPtr*
. Y at-il un moyen de contourner cela?