3

我有

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

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

}

它说 `bool operator<(Contact&)' 当我尝试将其更改为具有两个参数时,它必须恰好采用两个参数

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

}

它说它必须只接受一个论点

4

1 回答 1

10

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

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

制作您的 operatorconst和制作 the是一个好主意Contact &c const

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

bool operator<(const Contact &lhs, const Contact &rhs) {
    ...
}
于 2013-04-19T15:09:34.760 回答