未检测到重载运算符

Zef*_*flo 5 c++ templates overloading operator-keyword

首先,我使用模板创建了一个双向链表.我有一个"帐户"类,我已经重载了"=="运算符来比较帐户ID.我创建了一个链接列表来保存帐户.

当我向列表中添加一个新帐户时,它会调用"包含?" 调用==运算符的方法.这是调用错误的地方,g ++告诉我

sll.h:在成员函数'bool list :: contains(T)[with T = account]'中:

customer.h:25:35:从这里实例化

sll.h:261:3:错误:'temp-> node :: data == item'中'operator =='不匹配

account.h:36:6:注意:候选人是:bool account :: operator ==(account&)

我现在一直在调查几个小时,我无法深究它.我怀疑它可能与我使用模板这一事实有关.我创建了测试程序,看看我是否正确地重载了​​操作符并且它按预期工作.

另请注意:有一个客户类,它包含在帐户列表中,这就是所谓的"添加"方法.不幸的是,我不能发布超过2个超链接,所以我只能说出这个课程是正确的.= P

由于代码有点长,我使用了pastie:

链接列表类

帐户类

APr*_*mer 6

当您尝试与const参数进行比较时,您的operator ==将其右参数作为非const引用.顺便说一句,您的运算符==也是非const成员.

  1. 你的operator ==应该是一个const成员并采用const引用参数

  2. 你的运算符==最好是一个自由函数,或者两个参数不会以相同的方式处理转换,你有一个从字符串到帐户的隐式转换.

  3. 这种隐式转换真的需要吗?

  4. 您有公共数据成员是帐户.它真的想要吗?