编译器错误 C2584

“class”:直接基“Base2”不可访问;已是“Base1”的基

Class 已经直接派生自 Base1Base2 也派生自 Base1Class 无法派生自 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();
};