2012-11-29 40 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