最近は今まで 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() は他所からも自由に使える事を前提にお願いします。
初歩的な質問ですがよろしくお願いします。
#余談ですが、クラスのメンバ変数において、クラスの内側からは書き込み可、クラスの外側からは書き込み不可(どちらも読み取りは出来る)なアクセス指定子があったらいいなと思うのは私だけでしょうか。