'Base direta inacessível' causada por herança múltipla
Alerta de spoiler: Talvez uma pergunta estúpida. :)
#include <iostream>
using namespace std;
class Base
{
public:
virtual void YourMethod(int) const = 0;
};
class Intermediate : private Base
{
public:
virtual void YourMethod(int i) const
{
cout << "Calling from Intermediate" << i << "\n";
}
};
class Derived : private Intermediate, public Base
{
public:
void YourMethod(int i) const
{
cout << "Calling from Derived : " << i << "\n";
}
};
int main()
{
}
Alguem podeExplicar para mim por que isso lança o compiladorAviso:
main.cpp:21: warning: direct base ‘Base’ inaccessible in ‘Derived’ due to ambiguity
Agora, entendo que não há como esse código funcionar. Eu quero saber o porquê.Base
é privado paraIntermediate
portanto, não deve ser visível paraDerived
atravésIntermediate
. Então, de onde vem a ambiguidade? No construtor?