[問題] 多載+ class有變數是動態記憶體配置

看板C_and_CPP作者 (方格子)時間14年前 (2011/04/09 23:27), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/1
程式碼: http://codepad.org/NDTAuevU MATRIX MATRIX::operator+(const MATRIX &B) const { MATRIX sum(m,n); ......(略,把加起來的值一一填入sum的data裡面) (data在constructor中就會配置記憶體) retrun sum; } 呼叫的方法如下: MATRIX A(2,3), B(2,3), C(2,3); ... ..(填值,略過) C=A+B; 但這樣印C出來卻有亂碼 覺得應該是離開operator+後 sum的data的記憶體配置也被清掉... 不知道有沒有什麼解決方法呢? --

老闆都不懂.. ( ′-`)y-~

這裡禁煙喔XDDDD
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.125.213

04/09 23:33, , 1F
你的賦值有寫錯嗎?
04/09 23:33, 1F
賦值是說填值的地方嗎? 如果是的話,我有在加的過程中印出來過(存進去後再印) 是沒有錯的 但離開operator+就錯了 ※ 編輯: annheilong 來自: 61.228.125.213 (04/09 23:34) ※ 編輯: annheilong 來自: 61.228.125.213 (04/09 23:35)

04/09 23:37, , 2F
以這段來看,應該不是sum被釋放的問題
04/09 23:37, 2F
附上程式碼: http://codepad.org/NDTAuevU ※ 編輯: annheilong 來自: 61.228.125.213 (04/09 23:40)

04/09 23:40, , 3F
你有寫 operator= 嗎?
04/09 23:40, 3F
還沒有寫 ※ 編輯: annheilong 來自: 61.228.125.213 (04/09 23:41)

04/09 23:41, , 4F
看起來是沒有寫operator=,請補上去,做該做的事吧
04/09 23:41, 4F
有寫的在這: http://codepad.org/NJB0hMeJ 不過在operator=裡面 跑到 set_data(B.get_data()); 程式就會掛掉 有跑進去set_data(),但檢查_data不是NULL,進到for迴圈要給值就死掉了 ※ 編輯: annheilong 來自: 61.228.125.213 (04/09 23:44)

04/10 00:09, , 5F
你沒給初始的空間呀
04/10 00:09, 5F

04/10 00:09, , 6F
初始宣告的指標不是零
04/10 00:09, 6F
文章代碼(AID): #1De7hr-d (C_and_CPP)