我有这堂课:
template <class A_Type,int sizeA,int sizeB>
class Matrix {
...
...
...
Matrix transpose()const{
Matrix<A_Type, sizeB, sizeA> tmp(this->_arrayofarrays[0][0]);
for (int i=0;i<sizeA;i++)
for (int j=0;j<sizeB;j++)
tmp[i][j]=this->_arrayofarrays[j][i];
return tmp;
};
}
从这里可以看到我只想获得一个大小为B * A的新矩阵
但是我收到了这个错误:
Matrix.h:94:13: error: could not convert ‘tmp’ from ‘Matrix<int, 2, 3>’ to ‘Matrix<int, 3, 2>’
任何想法?
答案 0 :(得分:4)
确实没有Matrix<int,2,3>
到Matrix<int,3,2>
的隐式转换。这些是不同的类型。
要修复它,请使用transpose()
显式声明返回类型:
Matrix<A_Type, sizeB, sizeA> transpose() {
// ^^^^^^^^^^^^^^^^^^^^^^
// ...
}
答案 1 :(得分:3)
将函数transpose
的输出类型更改为Matrix<A_Type, sizeB, sizeA>
。