2012-11-29 88 views
0

我有一門功課,告訴我們創造了一個矩陣模板,其中矩陣1的列數等於列2模板矩陣與列數等於

我試過的行號:

#define TEMPLATEMATRIXCR template<class T, int , int > 
TEMPLATEMATRIXCR Matrix<T, R> operator* (Matrix<T, int, R> a, Matrix<T, R, int> b); 

它不工作,例如

矩陣[10] [30]
矩陣[20] [10]
所以,我需要與矩陣[20] [30]; //對不起,如果我的邏輯搞砸了。它告訴我E沒有被定義。

在第一時刻,我做了

TEMPLATEMATRIX Matrix<T, C, R> operator* (Matrix<T, C, R> a, Matrix<T,R, C> b); 

但這不是他想要的,所以現在我不能只解決2個數字,讓別人「自由」

我怎麼能這樣做什麼使用模板?

+0

Just fyi:不要再使用作業標籤。它已經過時並正在被刪除。 – Bart

+0

好的,謝謝你的信息 – Lefsler

+2

爲什麼'#define'爲'template <...>'?這真是太棒了! –

回答

1

我可能不太清楚你在問什麼,但是這不是你最終想做什麼嗎?

template<typename T, size_t R1, size_t C1, size_t R2> 
Matrix<T, R2, C1> operator *(const Matrix<T, R1, C1>&, const Matrix<T, R2, R1>&); 

或者你是否試圖讓C1和R2在編程上任意?

+0

我想我需要得到C1如果C1比R1大,我怎麼能去做? – Lefsler

+0

@demonofnight我不認爲這很重要。矩陣[乘法不可交換](http://en.wikipedia.org/wiki/Matrix_multiplication#Properties_of_matrix_multiplication),即, AB!= BA作爲一項規則,因此確定「更大」並不是真正的任意。我認爲你的定義是正確的,或者再一次,我嚴重遺漏了明顯的東西(不會是第一次)。 – WhozCraig

+0

並感謝,它正在嘗試做什麼..或者,可能我失去了一些東西,我想說的是,我現在只需要返回C1,如果它更大,如果不是我需要返回矩陣中的R1 Lefsler