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){...}
答案 0 :(得分:5)
我认为你需要第三个模板参数:
template <int N, int M, int P>
Matrix<N,P> operator*(Matrix<N,M>& a, Matrix<M,P>& b)
{
...
}
答案 1 :(得分:3)
您需要三个参数:
template <int rows, int cols, int cols2>
Matrix<rows,cols2> operator*(Matrix<rows,cols>& a, Matrix<cols,cols2>& b){...}