Если закрытая виртуальная функция переопределяется как открытая функция в производном классе, в чем заключаются проблемы?

using namespace std;
#include <cstdio>
#include <iostream>

class One{
    private:
        virtual void func(){
            cout<<"bark!"<<endl;
        }
};

class Two: public One{
    public:
        void func(){
            cout<<"two!"<<endl;
        }
};

int main(){
    One *o = new Two();
    o->func();
}

Почему есть ошибка наo->func()?

Я не знаю механизм, стоящий за этим ... На мой взгляд,o->func() следует позвонитьfunc() в производном классе, который является общедоступным, поэтому проблем не будет, но он говорит:

 error: ‘virtual void One::func()’ is private

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

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