コンパイラの警告 (レベル 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 );
};
考えられる修正方法は次のとおりです。
関数で基底クラスの仮想関数をオーバーライドするように意図していた場合は、静的指定子を削除します。
関数が静的メンバー関数であることを意図していた場合は、基底クラスの仮想関数と競合しないように名前を変更します。