다음을 통해 공유


컴파일러 오류 C3703

'이벤트 처리기': 이벤트 처리기 메서드는 원본 'event'와 동일한 스토리지 클래스를 가져야 합니다.

이벤트에는 연결된 이벤트 처리기와 다른 스토리지 클래스가 있습니다. 예를 들어 이벤트 처리기가 정적 멤버 함수이고 이벤트가 정적이지 않은 경우 이 오류가 발생합니다. 이 오류를 해결하려면 이벤트와 이벤트 처리기에 동일한 스토리지 클래스를 지정합니다.

다음 샘플에서는 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);
}