Error del compilador C3714
"method": un método controlador de eventos debe tener la misma convención de llamada que el "method" de origen
Definió un método de controlador de eventos que no usó la misma convención de llamada que el método de evento de origen. Para corregir este error, asigne al método del controlador de eventos las mismas convenciones de llamada que las del método de evento de origen. Por ejemplo, en el código siguiente, haga que las convenciones de llamada de handler1
y event1
coincidan con (__cdecl o __stdcall u otros). Quitar las palabras clave de convención de llamada de ambas declaraciones también solucionará el problema y hará que event1
y handler1
se establezcan en la convención de llamada thiscall de manera predeterminada. Para más información, consulte Convenciones de llamada.
El ejemplo siguiente genera el error 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
}
};