[問題] 使用return回傳矩陣

看板C_and_CPP作者 (トースト)時間8年前 (2015/11/26 15:40), 編輯推噓7(707)
留言14則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VS2008 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我的副程式放在跟主程式不同的cpp檔裡,該副程式我想做成有回傳值類型的 但我想return的是一個二維矩陣,但一直無法成功,想請問我該怎麼做比較好? 餵入的資料(Input): 副程式需餵入7個double類型的數值去進行計算 預期的正確結果(Expected Output): 該副程式(或class的成員函數)可以成功回傳出矩陣給主程式, 或是副程式所在的cpp檔其他副程式使用 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) double NDIPolaris::QuaternionToMatrix( Marker outMarker ) { . . . . const int m = 4; const int n = 4; Tom[4][4] ={{R11, R12, R13, X}, {R21, R22, R23, Y}, {R31, R32, R33, Z}, {T41, T42, T43, T44}}; return Tom; //回傳矩陣Tom } 以上是副程式大致上的內容,我希望可以回傳出計算完得到的4X4二維矩陣 謝謝。 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.126.5.215 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1448523653.A.4E9.html

11/26 15:56, , 1F
你可以傳一個陣列進去給它改
11/26 15:56, 1F

11/26 16:00, , 2F
一樓的方法,或new一個新矩陣,或用vector of vector
11/26 16:00, 2F

11/26 17:07, , 3F
推一樓,陣列當參數就會以address來傳
11/26 17:07, 3F

11/26 19:02, , 4F
或者是乾脆把矩陣做成class
11/26 19:02, 4F

11/26 19:19, , 5F
最簡單的做法是一樓那樣,不過有風險是你在外面長個過小
11/26 19:19, 5F

11/26 19:20, , 6F
空間,傳地址進func後,指派溢址。可以把matrix用class
11/26 19:20, 6F

11/26 19:20, , 7F
或struct包起來,日後搞壞記憶體的風險較低
11/26 19:20, 7F

11/26 22:48, , 8F
如果我要return的矩陣是在A class裡,該矩陣的值用B clas
11/26 22:48, 8F

11/26 22:48, , 9F
s包起來,兩個class要互相繼承嗎?
11/26 22:48, 9F

11/27 04:33, , 10F
如果有個int在A class裡,A和int要互相繼承嗎
11/27 04:33, 10F

11/27 20:23, , 11F
離開副程式時,裡面宣告的東西就會消滅
11/27 20:23, 11F

11/27 20:29, , 12F
你也可以在class宣告 private: double tom[4][4],然後用
11/27 20:29, 12F

11/27 20:29, , 13F
const double *class::func*(){return tom}
11/27 20:29, 13F

11/27 20:30, , 14F
上面 func 後面不小心多一個*
11/27 20:30, 14F
文章代碼(AID): #1MLhU5Jf (C_and_CPP)