Доступ к наследованию классов по умолчанию

Предположим, у меня есть базовый и производный класс:

class Base
{
    public:
    virtual void Do();
}

class Derived:Base
{
    public:
    virtual void Do();
}

int main()
{
    Derived sth;
    sth.Do(); // calls Derived::Do OK
    sth.Base::Do(); // ERROR; not calls Based::Do 
}

как видно, я хочу получить доступ к Base :: Do через Derived. Я получаю ошибку компиляции как «класс Base в недоступном», однако, когда я объявляю Derive как

class Derived: public Base

все работает нормально

Я прочитал, что доступ к наследованию по умолчанию является общедоступным, тогда зачем мне здесь явно объявлять публичное наследование?

Ответы на вопрос(4)

Ваш ответ на вопрос