c ++矩阵类不同的维度

时间:2015-04-08 20:16:03

标签: c++

template <int rows, int cols>
class Matrix{
 std::array<double, rows*cols> mData;
...
}

定义operator*以便能够将不具有相同尺寸的矩阵相乘的正确方法是什么?

我试过了,但它显然不起作用,因为它需要相同的尺寸。

template <int rows, int cols>
Matrix<rows,cols> operator*(Matrix<rows,cols>& a, Matrix<rows,cols>& b){...}

2 个答案:

答案 0 :(得分:5)

我认为你需要第三个模板参数:

template <int N, int M, int P>
Matrix<N,P> operator*(Matrix<N,M>& a, Matrix<M,P>& b)
{
    ...
}

请参阅http://en.wikipedia.org/wiki/Matrix_multiplication

答案 1 :(得分:3)

您需要三个参数:

template <int rows, int cols, int cols2>
Matrix<rows,cols2> operator*(Matrix<rows,cols>& a, Matrix<cols,cols2>& b){...}