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();
};