从自定义数据类型列表中删除C2678错误

时间:2012-05-18 11:02:39

标签: c++

我目前正在努力完成一个包含多种自定义数据类型的任务部分。我遇到了一个问题,列表抱怨我试图从同一数据类型的列表中删除自定义数据类型。

Error   3   error C2678: binary '==' : no operator found which takes a left-hand operand of type 'customer' (or there is no acceptable conversion)  c:\program files (x86)\microsoft visual studio 10.0\vc\include\list 1194    1   Assignment 1 - Video Store MIS

相关代码在这里:

void customerCollection::removeCustomer(customer person)
{
customers.remove(person);
}

并且自定义数据类型确实定义了==运算符:

bool customer::operator==(customer &other) const
{
return (l_fullName == other.getName()) && 
       (l_contactNumber == other.getNumber()) && 
       (l_password == other.getPassword()) && 
       (l_username == other.getUsername());
}

列表类型是否有任何原因无法看到重载运算符?

customerCollection和客户数据类型是程序的必需部分。

[EDIT]重载运算符在头文件中定义为public。

2 个答案:

答案 0 :(得分:3)

bool customer::operator==(customer &other) const

尝试将其更改为

bool customer::operator==(const customer &other) const

customers集合的代码可能会将const限定客户传递给相等运算符。至少,它更具惯用性(和逻辑性)。

答案 1 :(得分:0)

我倾向于说原因是参数不是const

 bool customer::operator==(const customer& other) const

取决于remove的定义方式。