看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) vs 2015, vs2017 問題(Question): 相同的Code vs2015 : 正確沒有錯誤 vs2017 : (多個相同錯誤) 沒有可接受的轉換 想請問一下有辦法讓vs2017正確編譯嗎(不使用 disable) 預期的正確結果(Expected Output): vs2015: no error vs2017: no error 錯誤結果(Wrong Output): vs2015: no error vs2017: 沒有可接受的轉換 程式碼(Code):(請善用置底文網頁, 記得排版) 錯誤都在operator + - / * 注: 會取這個標題是因為原本vs2017連 fraction += 1 都不給我轉換 但是PO文的時候卻變成可以 但是operator +-*/仍然不給轉 header: http://codepad.org/JIfcHK3v source: http://codepad.org/cN50bupE -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.145.23 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1517735422.A.EF3.html
qwer87511: 我的理解是 因為我是給他一個contructor所以沒辦法用 02/04 17:14
qwer87511: 參照接收,但VS2015就可以,這不公平 02/04 17:15
loveflames: Fraction(lhs)是右值,operator+=第一個參數只吃左值 02/04 18:16
loveflames: 另外,operator+=宜設計成成員 02/04 18:23
qwer87511: 第一句什麼意思,第二句我也想知道原因QQ 02/04 18:40
Ommm5566: 關鍵字 right value/ left value 02/04 19:47
qwer87511: 謝謝你們 我知道錯在哪了 02/04 22:47
qwer87511: 但我還是想知道 為什麼要使用成員含式 我之前有看一篇 02/04 22:48
qwer87511: 他寫: 不用成員的好處是因為可以讓另一個可以隱轉的 02/04 22:49
qwer87511: class T 也能使用該函式 那為什麼 += 就不需要 02/04 22:49
jerryh001: 轉型後是右值 02/04 23:23
LPH66: A += B 有 A = A + B 的意思在, 所以左邊至少要能收東西 02/05 00:45
LPH66: 因為這個語意的關係它不會有運算子左邊隱式轉型的問題 02/05 00:45
loveflames: +=沒運算元交換的問題,exceptional c++ item 20有詳 02/05 09:21
loveflames: 述理由 02/05 09:21