最近は今まで perl で書いていた使い捨てのプログラムをちこちこと勉強がてらC++で書くようにしているのですが、ちょっと分からないところがあり質問させていただきます。
class BASE{
protected:
int a;
};
class HOGE : public BASE{
private:
int b;
public:
void func();
};
void HOGE::func()
{
HOGE hoge;
BASE base;
hoge.b = 0; //ok
this->a = 0; //ok
base.a = 0; //error
}
main(void)
{
HOGE hoge;
hoge.func();
}
上記のコードにて何故、base.a = 0; がエラーとなるのでしょうか。そういう仕様だと言われればそれまでなのですが、どうにも納得がいきません。
またこういう場合はどのように記述するのが定石なのでしょうか。 クラス HOGE のメンバ関数 func() は他所からも自由に使える事を前提にお願いします。
初歩的な質問ですがよろしくお願いします。
#余談ですが、クラスのメンバ変数において、クラスの内側からは書き込み可、クラスの外側からは書き込み不可(どちらも読み取りは出来る)なアクセス指定子があったらいいなと思うのは私だけでしょうか。
