クラスのメンバー機能を自分の友人にするとどうなりますか?メンバーの機能を友人にする
以下のコードはコンパイルされ実行されます。友人宣言がなければ、 '演算子の引数が多すぎます。'が生成されます(正しくはそうです)。これを行うことは意味をなさないが、誰が私にここで何が起きているか教えてもらえますか?友人は何らかの方法でデフォルトのこのパラメータを省略するようにコンパイラに指示しますか?あなたは、クラスのメンバ関数自体の友人を作るとどう
class Test
{
public:
friend bool operator<(Test& lhs, Test& rhs)
{
return true;
}
};
int main(int c, char** argv)
{
Test test1;
Test test2;
return test1 < test2;
}
あなたの質問に答えるには:フレンドはC++ 03のbefriendingクラスのメンバーになることはできませんが、C++ 0xでは許可されています。 –
私は興味があります、それは既に完全なアクセス権を持っているので、メンバー機能がそれ自身の友人であることを可能にする可能性のある点はありますか? – radman
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#77または履歴を参照してください(ネストされたクラスはとにかくC++ 0xとほとんどのC++ 03コンパイラのネストクラス)。 –