«Недоступная прямая база», вызванная множественным наследованием
Спойлер: возможно, глупый вопрос. :)
#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()
{
}
Может кто тообъяснять мне почему это выкидывает компиляторпредупреждение:
main.cpp:21: warning: direct base ‘Base’ inaccessible in ‘Derived’ due to ambiguity
Теперь я понимаю, что этот код не будет работать. Я хочу знать почему.Base
является частнымIntermediate
поэтому он не должен быть виденDerived
черезIntermediate
, Так откуда же возникает двусмысленность? В конструкторе?