Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
"method" : "raise"-metoden har en annan lagringsklass än händelsens,
Anmärkningar
Händelsemetoder måste ha samma lagringsklass som händelsedeklarationen. Kompilatorn justerar händelsens metoder så att lagringsklasserna är desamma.
Den här varningen kan inträffa om du har en klass som implementerar en händelse från ett gränssnitt. Kompilatorn genererar inte implicit en höjningsmetod för en händelse i ett gränssnitt. När du implementerar gränssnittet i en klass genererar kompilatorn implicit en höjningsmetod och den metoden är inte virtuell, därav varningen. Mer information om händelser finns i händelsen.
Mer information om hur du inaktiverar en varning finns i varnings pragma.
Example
I följande exempel genereras C4803.
// 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();
}