次の方法で共有


コンパイラの警告 (レベル 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();
}