最も基本的なレベルでは、次のような別のクラスのプライベート データにアクセスするクラスのメソッドが必要です。
foo.h:
class foo{
void method( void );
}
bar.h:
class bar{
friend void foo::method( void );
}
ただし、メソッドはアクセスするオブジェクトを知る必要があるため、次のようになります。
foo.h:
class foo{
void method(bar* point);
}
bar.h:
class bar{
friend void foo::method(bar* point);
}
ただし、ご覧のとおり、これは循環的な依存関係をもたらします。bar はフレンドを宣言するために foo.h を必要とし、foo は bar ポインターを使用するため bar.h を必要とします。どのオブジェクトにアクセスするかをメソッドが知るには、他にどのような方法があるでしょうか?