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:
当您尝试与const参数进行比较时,您的operator ==将其右参数作为非const引用.顺便说一句,您的运算符==也是非const成员.
你的operator ==应该是一个const成员并采用const引用参数
你的运算符==最好是一个自由函数,或者两个参数不会以相同的方式处理转换,你有一个从字符串到帐户的隐式转换.
这种隐式转换真的需要吗?
您有公共数据成员是帐户.它真的想要吗?
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |