コンパイラの警告 (レベル 4) C4435
'class1': /vd2 下のオブジェクトのレイアウトは仮想ベース 'class2' により変更されます
既定では、この警告はオフに設定されています。 詳細については、「 既定で無効になっているコンパイラ警告 」を参照してください。
既定のコンパイル オプションである /vd1 では、派生クラスは指定された仮想ベースの vtordisp
フィールドを持ちません。 /vd2 または #pragma vtordisp(2)
が有効な場合は、vtordisp
フィールドが存在し、オブジェクトのレイアウトが変更されます。 これにより、相互に作用するモジュールが異な るvtordisp
設定でコンパイルされた場合、バイナリ互換性の問題が発生する可能性があります。
例
次の例では C4435 が生成されます。
// C4435.cpp
// compile with: /c /W4
#pragma warning(default : 4435)
class A
{
public:
virtual ~A() {}
};
class B : public virtual A // C4435
{};