C++相談室2

このエントリーをはてなブックマークに追加
>>256
>>224 の B は 「Aの派生クラス」 であって、A ではないよね。
だから A のインスタンスの protected メンバにはアクセスできない。
でも B の別のインスタンスの
(A から継承した) protected メンバにはアクセスできるから、
下のようにすればコンパイルは通る。

class A {
protected:
 int xxx;
};

class B : public A {
public:
 void func(B* ptr); // B へのポインタを受け取るようにする。
};

void B::func(B* ptr) {
 cout << ptr->xxx;
}