[问题] operator问题

楼主: CppGod (CPP IS GOD)   2023-07-20 08:32:54
开发平台(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):
作者: school4303 (某爬虫类)   2023-07-20 09:14:00
加const? 你的operater+的参数都改成const Fraction&
楼主: CppGod (CPP IS GOD)   2023-07-20 10:02:00
加了const就可以了! 想请教原因~
作者: jack7775kimo (阿庞)   2023-07-20 11:09:00
当你想要做p1+p2+p3这种连加时,p1+p2会产生暂时物件
作者: jheli (我是企鹅)   2023-07-20 12:02:00
operator最好都要加const来修饰
作者: Dracarys (MayShowGunMore)   2023-07-20 12:43:00
相加expression是prvalueNon-const lvalue reference cannot bind to a prvalue
楼主: CppGod (CPP IS GOD)   2023-07-21 05:44:00
谢谢D大 谢谢大家的解答!
作者: wulouise (在线上!=在电脑前)   2023-07-23 15:20:00

Links booklink

Contact Us: admin [ a t ] ucptt.com