Udostępnij za pośrednictwem


Ostrzeżenie kompilatora C4484

"override_function": pasuje do metody klasy bazowej ref "base_class_function", ale nie jest oznaczona jako "virtual", "new" lub "override"; Przyjmuje się, że "nowy" (a nie "wirtualny")

Podczas kompilowania z /clr kompilator nie będzie niejawnie przesłaniać funkcji klasy bazowej, co oznacza, że funkcja uzyska nowe miejsce w tabeli wirtualnej. Aby rozwiązać ten problem, jawnie określ, czy funkcja jest przesłonięć.

Aby uzyskać więcej informacji, zobacz:

C4484 jest zawsze wystawiany jako błąd. Użyj pragma ostrzeżenia, aby pominąć C4484.

Przykład

Poniższy przykład generuje C4484.

// C4484.cpp
// compile with: /clr
ref struct A {
   virtual void Test() {}
};

ref struct B : A {
   void Test() {}   // C4484
};

// OK
ref struct C {
   virtual void Test() {}
   virtual void Test2() {}
};

ref struct D : C {
   virtual void Test() new {}
   virtual void Test2() override {}
};