`bool operator<(Contact&)'必须带两个参数

时间:2013-04-19 15:07:13

标签: c++ comparison operator-overloading overloading operator-keyword

我有

class Conatact{
.....
bool operator<(Contact &c);
};

bool operator<(Contact &c)
{
     return this.getName<c.getName();

}

它说`bool operator&lt;(Contact&amp;)'必须带两个参数 当我尝试将其更改为有两个参数时

bool operator<(Contact &c)
{
     return this.getName<c.getName();

}

它说它必须只有一个参数

1 个答案:

答案 0 :(得分:9)

我认为你需要通过提供一个完全限定的名称向编译器表明它是一个成员实现:

bool Conatact::operator<(Contact &c)
{
     return this->getName() < c.getName();
}

最好让您的运营商const成为Contact &c const

如果没有作用域解析限定符,编译器会认为您正在定义一个“独立”运算符来比较联系人,在这种情况下,运算符确实需要采用两个参数:

bool operator<(const Contact &lhs, const Contact &rhs) {
    ...
}