Delen via


Compilerwaarschuwing (niveau 1) C4803

'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();
}