作者john2223k (配枪)
看板C_and_CPP
标题[问题] 新手Overloading operator ==问题请益
时间Sun Jun 7 13:18:24 2020
开发平台(Platform): (Ex: Win10, Linux, ...)
macOS中安装Vs Code
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
gcc编译
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
想请问各位大大~小弟新手,
练习时利用重载operator==运算符,想要实现在List中利用List的.remove()传入自
定义数据类型,但却报此错误:
错误结果(Wrong Output):
johnsu@MacBook-Pro list % g++ list.cpp -o main.out
In file included from list.cpp:4:
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/list:2150:18:
error:
invalid operands to binary expression ('const
std::__1::__list_const_iterator<Hero, void
*>::value_type' (aka 'const Hero') and 'const
std::__1::list<Hero, std::__1::allocator<Hero>
>::value_type' (aka 'const Hero'))
if (*__i == __x)
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
http://codepad.org/7tWj0gSC
补充说明(Supplement):
我尝试过再重载参数里面传入const Hero& h跟没有const的版本,报的错误是相同的。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 219.71.198.39 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1591507107.A.45E.html
2F:→ Lipraxde: 错误讯息应该不止这麽一点,底下应该还有。另外,通常 06/07 13:52
3F:→ Lipraxde: 是不会在 header 前面使用 using namespace06/07 13:52
4F:→ Lipraxde: 对了,也许宣告成 const member function 会可以06/07 13:56
谢谢回覆!完全可以了,Header部分也非常感谢!我会注意这个习惯。
5F:→ Jockey66666: 解1 : 改成non-member function的版本06/07 14:00
6F:→ Jockey66666: 解2 : 改成 const member function06/07 14:01
7F:→ Jockey66666: 其实错误讯息讲得蛮清楚的了.06/07 14:01
感谢回覆!我可能新手还比较看不懂错误讯息,已经利用const member function 解决
※ 编辑: john2223k (39.8.37.17 台湾), 06/07/2020 14:51:00
8F:→ Lipraxde: 跟 template 有关错误讯息常常会喷一大串,熟悉的话可06/07 15:15
9F:→ Lipraxde: 能看一点就知道原因了,不过剩下的那些讯息还是很有用06/07 15:15
感谢,确实是喷出一大串,有写第几行错误的讯息,不过因为实在太长就没有贴出~会练
习阅读这些讯息
※ 编辑: john2223k (39.8.37.17 台湾), 06/07/2020 15:18:43
10F:推 kingofsdtw: 别直接return吧? 抓bug很难切 06/08 01:05