编译器错误 C2584
“class”:直接基“Base2”不可访问;已是“Base1”的基
Class
已经直接派生自 Base1
。 Base2
也派生自 Base1
。 Class
无法派生自 Base2
,因为这意味着再次从 Base1
继承(间接地),这不合法,因为 Base1
已是直接基类。
示例
以下示例生成 C2584。
// C2584.cpp
// compile with: /c
struct A1 {
virtual int MyFunction();
};
struct A2 {
virtual int MyFunction();
};
struct B1: public virtual A1, virtual A2 {
virtual int MyFunction();
};
struct B2: public virtual A2, virtual A1 {
virtual int MyFunction();
};
struct C: virtual B1, B2 {
virtual int MyFunction();
};
struct Z : virtual B2, virtual C { // C2584
// try the following line insted
// struct Z : virtual C {
virtual int MyFunction();
};