Спойлер: Может быть, глупый вопрос. :)
#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
Теперь я понимаю, что этот код никак не будет работать. Я хочу знать почему. База
является частной для Промежуточного
, поэтому она не должна быть видна для Производного
до Промежуточного
. Так откуда взялась двусмысленность? В конструкторе?