[問題] 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