これは合法ですか?そうでない場合、次のコードはこれを許可しますか?
class Foo
{
friend class Foo;
}
これは合法ですか?そうでない場合、次のコードはこれを許可しますか?
class Foo
{
friend class Foo;
}
それは冗長です。Foo は既にすべての Foo メンバーにアクセスできます。2 つの Foo オブジェクトは、互いのメンバーにアクセスできます。
class Foo {
public:
int touchOtherParts(const Foo &foo) {return foo.privateparts;}
private:
int privateparts;
};
Foo a,b;
b.touchOtherParts(a);
上記のコードは問題なく動作します。B は a のプライベート データ メンバーにアクセスします。
はい、 class のFoo
オブジェクトが class の別のオブジェクトのプライベート メンバーにアクセスすることは合法ですFoo
。これは、コピーの作成や代入などで必要になることが多く、特別なフレンド宣言は必要ありません。
冗長で不要です。さらに、g ++で次の警告が表示されます
warning: class ‘Foo’ is implicitly friends with itself