我不能在类中的布尔运算符中添加两个或多个参数

时间:2019-07-07 23:38:22

标签: c++ c++11 visual-c++

当我尝试添加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();
    }

它说参数太多,但是我的书说没有。你能帮我吗?

1 个答案:

答案 0 :(得分:5)

作为成员函数,operator==()必须采用一个参数,即右侧操作数。左侧的操作数是this对象。

当实现为自由的非成员函数时,它仅需要两个参数。

请注意,将二进制运算符实现为成员函数时,可能会遇到排序问题。有关详细信息,请参见this answer