作者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/m.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