"Недоступная прямая база" из-за множественного наследования

Спойлер: Может быть, глупый вопрос. :)

#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

Теперь я понимаю, что этот код никак не будет работать. Я хочу знать почему. База является частной для Промежуточного , поэтому она не должна быть видна для Производного до Промежуточного . Так откуда взялась двусмысленность? В конструкторе?

19
задан Ben Voigt 9 November 2014 в 21:52
поделиться