編譯器錯誤 C3703
'event handler': 事件處理程式方法必須具有與來源 '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);
}