作者t78923t (トースト)
看板C_and_CPP
標題[問題] 使用return回傳矩陣
時間Thu Nov 26 15:40:47 2015
開發平台(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
推 OPIV: 你可以傳一個陣列進去給它改 11/26 15:56
推 IKAFIRE: 一樓的方法,或new一個新矩陣,或用vector of vector 11/26 16:00
推 fightforlive: 推一樓,陣列當參數就會以address來傳 11/26 17:07
→ remizu: 或者是乾脆把矩陣做成class 11/26 19:02
推 overhead: 最簡單的做法是一樓那樣,不過有風險是你在外面長個過小 11/26 19:19
→ overhead: 空間,傳地址進func後,指派溢址。可以把matrix用class 11/26 19:20
→ overhead: 或struct包起來,日後搞壞記憶體的風險較低 11/26 19:20
→ t78923t: 如果我要return的矩陣是在A class裡,該矩陣的值用B clas 11/26 22:48
→ t78923t: s包起來,兩個class要互相繼承嗎? 11/26 22:48
推 OPIV: 如果有個int在A class裡,A和int要互相繼承嗎 11/27 04:33
推 noodleT: 離開副程式時,裡面宣告的東西就會消滅 11/27 20:23
推 noodleT: 你也可以在class宣告 private: double tom[4][4],然後用 11/27 20:29
→ noodleT: const double *class::func*(){return tom} 11/27 20:29
→ noodleT: 上面 func 後面不小心多一個* 11/27 20:30