保護された継承を使用して仮想関数を作成します
#include<iostream>
using namespace std;
class D{
private:
int a;
protected:
int b;
public:
D(){a=b=c=0;}
virtual void f(){
a=2;
cout <<"D::f"<<a<<endl;
}
void g(){cout<<"D::g"<<a<<endl;}
int c;
};
class E:protected D{
private:
int a,b,c;
public:
E(){a=b=c;}
void f(){
a=3;
cout<<"E::f"<<a<<endl;
}
void g(){cout<<"E::g"<<a<<endl;}
};
int main(){
D *d = new E;
d->f();
d->g();
return 0;
}
しかし、私がそれを使用すると、アクセスできないベースになります。
公的継承に変更すれば実行できます。
なぜD*d =newEを使用できないのだろうか。プライベートで保護された継承で?
事前にThx。