コンパイラの警告 C4484

'override_function' : 基底 ref クラスのメソッド 'base_class_function' と一致しますが、'virtual'、'new'、または 'override' とマークされていません。('virtual' ではなく) 'new' が必要です

/clr を使用してコンパイルする場合、コンパイラは基底クラスの関数を暗黙的にオーバーライドしません。つまり、関数は vtable に新しいスロットを得ることになります。 解決するには、関数がオーバーライドであるかどうかを明示的に指定します。

詳細については、以下を参照してください:

C4484 は、常にエラーとして表示されます。 C4484 が表示されないようにするには、warning pragma を使用します。

次の例では 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 {}
};