Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
'method' : de raise-methode heeft een andere opslagklasse dan die van de gebeurtenis, 'gebeurtenis'
Opmerkingen
Gebeurtenismethoden moeten dezelfde opslagklasse hebben als de gebeurtenisdeclaratie. De compiler past de methoden van de gebeurtenis aan zodat de opslagklassen hetzelfde zijn.
Deze waarschuwing kan optreden als u een klasse hebt waarmee een gebeurtenis vanuit een interface wordt geïmplementeerd. De compiler genereert niet impliciet een ophefmethode voor een gebeurtenis in een interface. Wanneer u die interface in een klasse implementeert, genereert de compiler impliciet een raise-methode. Deze methode is niet virtueel, vandaar de waarschuwing. Zie gebeurtenis voor meer informatie over gebeurtenissen.
Zie waarschuwingspragma voor informatie over het uitschakelen van een waarschuwing.
Example
In het volgende voorbeeld wordt C4803 gegenereerd.
// C4803.cpp
// compile with: /clr /W1
using namespace System;
public delegate void Del();
ref struct E {
Del ^ _pd1;
event Del ^ E1 {
void add (Del ^ pd1) {
_pd1 = dynamic_cast<Del ^>(Delegate::Combine(_pd1, pd1));
}
void remove(Del^ pd1) {
_pd1 = dynamic_cast<Del^> (Delegate::Remove(_pd1, pd1));
}
virtual void raise() { // C4803 warning (remove virtual)
if (_pd1)
_pd1();
}
}
void func() {
Console::WriteLine("In E::func()");
}
};
int main() {
E ^ ep = gcnew E;
ep->E1 += gcnew Del(ep, &E::func);
ep->E1();
ep->E1 -= gcnew Del(ep, &E::func);
ep->E1();
}