Partager via


Erreur du compilateur C3138

'interface' : une interface 'attribute' doit hériter d’IDispatch, ou d’une interface qui hérite d’IDispatch

Une interface avec les attributs double ou dispinterface n’a IDispatch pas comme interface de base directe ou indirecte.

L’exemple suivant génère l’erreur C3138 :

// C3138.cpp
#include <unknwn.h>

[ object, uuid("77ac9240-6e9a-11d2-97de-0000f805d73b") ]
__interface IMyCustomInterface
{
   HRESULT mf1(void);
};

[ dispinterface, uuid("3536f8a0-6e9a-11d2-97de-0000f805d73b") ]
__interface IMyDispInterface : IUnknown
{
   [id(1)] HRESULT mf2(void);
};

[ object, dual, uuid("34e90a10-6e9a-11d2-97de-0000f805d73b") ]
__interface IMyDualInterface : IMyCustomInterface  // C3138 expected
{
   HRESULT mf3(void);
};