Udostępnij przez


Błąd kompilatora C3714

"method": metoda obsługi zdarzeń musi mieć taką samą konwencję wywoływania jak źródłowa "metoda"

Uwagi

Zdefiniowano metodę obsługi zdarzeń, która nie korzystała z tej samej konwencji wywoływania co metoda zdarzenia źródłowego. Aby naprawić ten błąd, nadaj metodzie obsługi zdarzeń te same konwencje wywoływania co metody zdarzenia źródłowego. Na przykład w poniższym kodzie ustaw konwencje handler1 wywoływania i event1 dopasowywania (__cdecl lub __stdcall lub inne). Usunięcie słów kluczowych konwencji wywoływania z obu deklaracji rozwiąże również problem i spowodujeevent1, że domyślnie handler1 będzie tokonwencja wywołania. Aby uzyskać więcej informacji, zobacz Konwencje wywoływania.

Example

Poniższy przykład generuje 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
   }
};