作者CppGod (CPP IS GOD)
看板C_and_CPP
标题[问题] operator问题
时间Thu Jul 20 08:32:54 2023
开发平台(Platform): (Ex: Win10, Linux, ...)
Win11
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
VS2022
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
n/a
问题(Question):
使用operator改写物件相加的行为
但同一行只要超过两个物件就会fail
ex.
obj+obj -> pass
obj+obj+obj -> fail
喂入的资料(Input):
预期的正确结果(Expected Output):
错误结果(Wrong Output):
错误 C2678 二元运算子 '+': 找不到使用左方运算元类型 'Fraction' 的运算子
(或是没有可接受的转换)
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
https://ideone.com/j1Ad9p
补充说明(Supplement):
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.251.193.197 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1689813176.A.0A2.html
1F:→ school4303: 加const? 你的operater+的参数都改成const Fraction& 07/20 09:14
2F:→ CppGod: 加了const就可以了! 想请教原因~ 07/20 10:02
3F:→ jack7775kimo: 当你想要做p1+p2+p3这种连加时,p1+p2会产生暂时物件 07/20 11:09
4F:推 jheli: operator最好都要加const来修饰 07/20 12:02
5F:推 Dracarys: 相加expression是prvalue 07/20 12:43
6F:推 Dracarys: Non-const lvalue reference cannot bind to a prvalue 07/20 13:06
7F:→ CppGod: 谢谢D大 谢谢大家的解答! 07/21 05:44