Compartir a través de


Error del compilador C2584

'clase': no se puede acceder a la base directa 'base2'; ya es la base de 'base1'

Class se deriva directamente de Base1. La clase Base2 también se deriva de Base1. Class no se puede derivar de Base2 porque eso significaría heredarse (indirectamente) de Base1 otra vez, que no es válido porque Base1 ya es una clase de base directa.

Ejemplo

El ejemplo siguiente genera el error 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();
};