Errore del compilatore C3714
'method': un metodo del gestore eventi deve avere la stessa convenzione di chiamata dell'origine 'method'
È stato definito un metodo del gestore eventi che non ha usato la stessa convenzione di chiamata del metodo dell'evento di origine. Per correggere questo errore, assegnare al gestore eventi le stesse convenzioni di chiamata di quelle del metodo dell'evento di origine. Ad esempio, nel codice seguente, impostare le convenzioni di chiamata di handler1
e event1
di corrispondenza (__cdecl o __stdcall o altri). La rimozione delle parole chiave della convenzione di chiamata da entrambe le dichiarazioni risolverà anche il problema e causerà event1
e handler1
per impostazione predefinita la convenzione di chiamata thiscall . Per altre informazioni, vedere Convenzioni di chiamata.
L'esempio seguente genera l'errore 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
}
};