Erro do Compilador C2584
"Class": a base direta "Base2" está inacessível; já é uma base de "Base1"
Class
já é diretamente derivada de Base1
. Base2
também é derivada de Base1
. Class
não pode ser derivada de Base2
porque isso significaria herdar (indiretamente) de Base1
novamente, o que não é legal porque Base1
já é uma classe base direta.
Exemplo
A amostra a seguir gera o erro 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();
};