Если закрытая виртуальная функция переопределяется как открытая функция в производном классе, в чем заключаются проблемы?
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