コンパイラの警告 (レベル 4) C4487
'derived_class_function' : 継承された仮想でないメソッド 'base_class_function' と一致しますが、'new' に明示的に設定されていません
派生クラスの関数のシグネチャが、仮想でない基底クラスの関数と同じです。 C4487 は、派生クラスの関数は基底クラスの関数をオーバーライドしないことを知らせるものです。 この警告を解決するには、派生クラス関数を明示的に new
と指定します。
詳細については、「new (vtable の新しいスロット)」を参照してください。
例
次の例では C4487 が生成されます。
// C4487.cpp
// compile with: /W4 /clr
using namespace System;
public ref struct B {
void f() { Console::WriteLine("in B::f"); }
void g() { Console::WriteLine("in B::g"); }
};
public ref struct D : B {
void f() { Console::WriteLine("in D::f"); } // C4487
void g() new { Console::WriteLine("in D::g"); } // OK
};
int main() {
B ^ a = gcnew D;
// will call base class functions
a->f();
a->g();
}