派生クラスから隠蔽されたメンバにアクセスする
#include<iostream> using namespace std; class SampleA{ public: int a; int same; }; class SampleB: public SampleA{ int b; int same; }; void main(){ SampleB bb; SampleA* pa = &bb; // 派生クラスSampleB型オブジェクトのアドレスを // SampleA型に変換 bb.a = 100; bb.b = 200; bb.same = 300; bb.SampleA::same = 400; cout << " bb.a = " << bb.a << '\n'; cout << " bb.b = " << bb.b << '\n'; cout << " bb.same = " << bb.same << '\n'; cout << " bb.SampleA::same = " << bb.SampleA::same << '\n'; cout << " pa->a = " << pa->a << '\n'; // SampleAのポインタで指定 cout << " pa->same = " << pa->same << '\n'; // SampleAのポインタで指定 }SampleAとSampleBには同一メンバsameがある。隠蔽されたSampleAのsame2アクセスするためにはスコープ解釈演算子 :: を使う必要がある。
bb.a = 100 bb.b = 200 bblsame = 300 bb.SampleA::same = 400 pa->a = 100 pa->same = 400
コメントをかく