Partager via


Erreur du compilateur C2584

'Class' : base directe 'Base2' est inaccessible ; déjà une base de 'Base1'

Class dérive déjà directement de Base1. Base2 dérive également de Base1. Class ne peut pas dériver Base2 du fait que cela signifie hériter (indirectement) de nouveau Base1 , ce qui n’est pas légal parce qu’il Base1 s’agit déjà d’une classe de base directe.

Exemple

L’exemple suivant génère l’erreur 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();
};