コンパイラの警告 (レベル 1) C4584
'class1' : 基底クラス 'class2' は既に 'class3' の基底クラスです
定義したクラスは 2 つのクラスを継承しており、そのうちの一方が他方を継承しています。 次に例を示します。
// C4584.cpp
// compile with: /W1 /LD
class A {
};
class B : public A {
};
class C : public A, public B { // C4584
};
この場合、クラス C で警告が出されます。なぜなら、クラス C はクラス A とクラス B の両方を継承しており、クラス B もクラス A も継承しているからです。この警告には、これらの基底クラスのメンバーを使用するには完全修飾が必要であることを知らせる意味があります。その条件を満たさない場合、どのクラス メンバーを参照しているのかがあいまいであるという理由でコンパイラ エラーが生成されます。