推 jinnylinr:了解!我再去試試看~謝謝你:D 01/05 00:34
※ 引述《jinnylinr (小瓜)》之銘言:
: 各位好
: 我定義了一個類別如下
: class Matrix
: {
: public:
: void multiply(int, int, int, int [][], int [][]);
: };
: 後面兩個陣列應該要填入行列大小才是
: 如果行列大小必須要使用者輸入
: 該怎麼處理呢@@
: 完整程式碼如下
: 還沒處理好所以bug爆炸多>"<
: 先謝過各位的幫忙<(_ _)>
物件的基本元素是一種特定資料結構,加上一群操作該資料結構的函式。
過去在 C 語言中必須用 struct 加上數個 function,在 C++ 中則可以
將資料結構和相關操作全部包進一個 class。
在你的例子中,意義上 multiply() 的操作對象其實是兩個矩陣,
也就是說如果你直接包裝好一種 Matrix 資料結構,操作就會容易許多。
考慮以下假想的程式碼:
(以下例子忽略使用 pointer/reference 的可能性以簡化說明)
Matrix ma(10, 10), mb(10, 10); // 宣告兩個 10x10 的矩陣
for (int i = 0; i < 10; i++) { // 初始化這兩個矩陣
...
}
Matrix mc = ma.Add(mb); // C = A + B
Matrix md = ma.Multiply(mb); // D = A * B
這樣的操作就更加符合物件的精神,而且做到了封裝。
因此我會建議你試著把 Matrix 這個資料結構先寫好,
而避免在所有函式上都直接帶 C 陣列。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.114.73