当我尝试添加bool operator==(complx a, complx b)
时说
|Code |Description
|EO344 too many parameters for this operator function
我尝试只使用一个参数,但是我做不到。
这是实际功能:
//boolean operators "|Code |Description
bool operator==(complx a, complx b) //error: " EO344 too many parameters for this operator function"
{
/*error code*/return a.real() == b.real() && a.imag() == b.imag();
}
它说参数太多,但是我的书说没有。你能帮我吗?
答案 0 :(得分:5)
作为成员函数,operator==()
必须采用一个参数,即右侧操作数。左侧的操作数是this
对象。
当实现为自由的非成员函数时,它仅需要两个参数。
请注意,将二进制运算符实现为成员函数时,可能会遇到排序问题。有关详细信息,请参见this answer。