如何以不同的顺序返回相同的模板类重用模板参数?

时间:2016-05-29 15:54:17

标签: c++ class templates

我有这堂课:

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>’

任何想法?

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>