Kompilatorfel C3703

Händelsehanterare: en händelsehanterarmetod måste ha samma lagringsklass som källans händelse

Anmärkningar

En händelse har en annan lagringsklass än den händelsehanterare som den är ansluten till. Det här felet inträffar till exempel om händelsehanteraren är en statisk medlemsfunktion och händelsen inte är statisk. Åtgärda det här felet genom att ge händelsen och händelsehanteraren samma lagringsklass.

Example

I följande exempel genereras C3703:

// C3703.cpp
// C3703 expected
#include <stdio.h>

[event_source(type=native)]
class CEventSrc {
public:
   __event static void MyEvent();
};

[event_receiver(type=native)]
class CEventHandler {
public:
   // delete the following line to resolve
   void MyHandler() {}

   // try the following line instead
   // static void MyHandler() {}

   void HookIt(CEventSrc* pSource) {
      __hook(CEventSrc::MyEvent, pSource, &CEventHandler::MyHandler);
   }

   void UnhookIt(CEventSrc* pSource) {
      __unhook(CEventSrc::MyEvent, pSource, &CEventHandler::MyHandler);
   }
};

int main() {
   CEventSrc src;
   CEventHandler hnd;

   hnd.HookIt(&src);
   __raise src.MyEvent();
   hnd.UnhookIt(&src);
}