クラス宣言内でオーバーロードされた演算子:
class Asdf{
operator float() const;
Asdf operator+(const Asdf&) const;
Asdf operator+(float);
}
int main()
{
Asdf object1, object2, object3;
//Receiving error: "more than one operator '+' matches these operands"
object1= object2 + object3;
_getch();
return 0;
}
エラー:
:error C2666: 'Asdf::operator +': 3 つのオーバーロードの変換が似ています :「Asdf Asdf::operator +(float)」の可能性あり :'Asdf Asdf::operator +(const Asdf &) const'
オーバーロードされた変換演算子で使用されるすべての変換を削除するとfloat
、コードは正しくコンパイルされます。