Partager via


Erreur du compilateur C3714

'method' : une méthode de gestionnaire d’événements doit avoir la même convention d’appel que la source 'method'

Vous avez défini une méthode de gestionnaire d’événements qui n’a pas utilisé la même convention d’appel que la méthode d’événement source. Pour corriger cette erreur, donnez à la méthode du gestionnaire d’événements les mêmes conventions d’appel que celles de la méthode d’événement source. Par exemple, dans le code ci-dessous, effectuez les conventions d’appel et handler1 event1 la correspondance (__cdecl ou __stdcall ou d’autres). La suppression des mots clés de convention d’appel des deux déclarations résout également le problème, et provoque et entraîne event1 la handler1 valeur par défaut de la convention d’appel de cet appel . Pour plus d’informations, consultez Conventions d’appel.

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

// C3714.cpp
// compile with: /c
// processor: x86
[event_source(native)]
class CEventSrc {
public:
   __event void __cdecl event1();
   // try the following line instead
   // __event void __stdcall event1();
};

[event_receiver(native)]
class CEventRec {
public:
   void __stdcall handler1() {}

   void HookEvents(CEventSrc* pSrc) {
      __hook(&CEventSrc::event1, pSrc, &CEventRec::handler1);   // C3714
   }

   void UnhookEvents(CEventSrc* pSrc) {
      __unhook(&CEventSrc::event1, pSrc, &CEventRec::handler1); // C3714
   }
};