[問題] operator問題

看板C_and_CPP (C/C++)作者 (CPP IS GOD)時間1年前 (2023/07/20 08:32), 編輯推噓3(304)
留言7則, 5人參與, 1年前最新討論串1/1
開發平台(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://www.ptt.cc/bbs/C_and_CPP/M.1689813176.A.0A2.html

07/20 09:14, 1年前 , 1F
加const? 你的operater+的參數都改成const Fraction&
07/20 09:14, 1F

07/20 10:02, 1年前 , 2F
加了const就可以了! 想請教原因~
07/20 10:02, 2F

07/20 11:09, 1年前 , 3F
當你想要做p1+p2+p3這種連加時,p1+p2會產生暫時物件
07/20 11:09, 3F

07/20 12:02, 1年前 , 4F
operator最好都要加const來修飾
07/20 12:02, 4F

07/20 12:43, 1年前 , 5F
相加expression是prvalue
07/20 12:43, 5F

07/20 13:06, 1年前 , 6F
Non-const lvalue reference cannot bind to a prvalue
07/20 13:06, 6F

07/21 05:44, 1年前 , 7F
謝謝D大 謝謝大家的解答!
07/21 05:44, 7F
文章代碼(AID): #1ak82u2Y (C_and_CPP)
文章代碼(AID): #1ak82u2Y (C_and_CPP)