>>213
class A
{
protected:
  void Hoge();
};

class B : public A
{
public:
  void Func(B& b) {
    Hoge(); // thisを通しての Hoge() →Aを継承したBクラスから呼ぶからこれはOK
    b.Hoge(); // b を通してのHoge()。ok(のはず・・・) →NGだよ! Aクラスでprotected指定してるから
                             //これがOKだったらメンバカプセル化が出来ないことになる
                             //そしてどのクラスからでもprotected指定のメンバが見えてしまう
                             //ことになる
    A& a = b;
    a.Hoge(); //<--- これはどうなるんでしょう・・・・????? →エラーだよ! Aクラスでprotected指定だから
  }
};