>>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;
}