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
貧しい奪わクラスを参照してください:?。? '( – qxz