Erro do compilador C3714
'method': um método manipulador de eventos deve ter a mesma convenção de chamada da fonte 'method'
Você definiu um método de manipulador de eventos que não usou a mesma convenção de chamada que o método de evento de origem. Para corrigir esse erro, forneça ao método manipulador de eventos os mesmos parâmetros que os do método de evento fonte. Por exemplo, no código abaixo, faça as convenções de chamada de handler1
e event1
corresponderem (__cdecl ou __stdcall ou outros). Remover palavras-chave da convenção de chamada de ambas as declarações também resolverá o problema e levará event1
e handler1
a reverterem para o padrão de convenção de chamada thiscall. Para obter mais informações, consulte Convenções de chamada.
O exemplo a seguir gera o erro 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
}
};