Erreur du compilateur C3703
' gestionnaire d’événements' : une méthode de gestionnaire d’événements doit avoir la même classe de stockage que la source 'event'
Un événement a une classe de stockage différente de celle du gestionnaire d’événements auquel elle est connectée. Par exemple, cette erreur se produit si le gestionnaire d’événements est une fonction membre statique et que l’événement n’est pas statique. Pour corriger cette erreur, attribuez à l’événement et au gestionnaire d’événements la même classe de stockage.
L’exemple suivant génère l’erreur 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);
}