次の例を参照してください。
struct Foo
{
int a;
int b;
bool operator == (const Foo & x)
{
return a == x.a && b == x.b;
}
};
int main ()
{
Foo a;
a = {1, 2};
if (a == {1, 2}) // error: expected primary-expression before ‘{’ token
{
}
}
ラインa={1,2}
は大丈夫です。Foo
中かっこは、暗黙的なメソッドの引数の型と一致するように a に変換されますoperator=
。operator=
ユーザー定義の場合でも機能します。
示されているように行if (a=={1,2}})
エラー。
式がユーザー定義メソッドに一致{1,2}
するように変換されないのはなぜですか?Foo
operator==