次の方法で共有


コンパイラの警告 (レベル 1) C4526

'function' : 静的メンバー関数は仮想関数をオーバーライドできません。'virtual function'オーバーライドは無視され、仮想関数は非表示になります

静的メンバー関数は、仮想関数をオーバーライドするための条件を満たしています。これにより、メンバー関数は virtual と static の両方で機能します。

次のコードでは C4526 が生成されます。

// C4526.cpp
// compile with: /W1 /c
// C4526 expected
struct myStruct1 {
   virtual void __stdcall func( int ) = 0;
};

struct myStruct2: public myStruct1 {
   static void __stdcall func( int );
};

考えられる修正方法は次のとおりです。

  • 関数で基底クラスの仮想関数をオーバーライドするように意図していた場合は、静的指定子を削除します。

  • 関数が静的メンバー関数であることを意図していた場合は、基底クラスの仮想関数と競合しないように名前を変更します。