2016-05-29 73 views
2

我有這個類:如何返回相同的模板類以不同的順序重用模板參數?

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,但我得到這個錯誤:

Matrix.h:94:13: error: could not convert ‘tmp’ from ‘Matrix<int, 2, 3>’ to ‘Matrix<int, 3, 2>’ 

任何想法?

+4

你嘗試'矩陣轉(){...}'了嗎? –

回答

4

確實沒有隱含轉換爲Matrix<int,2,3>Matrix<int,3,2>。這些是不同的類型。

爲了解決這個問題,明確地transpose()聲明的返回類型:

Matrix<A_Type, sizeB, sizeA> transpose() { 
    // ^^^^^^^^^^^^^^^^^^^^^^ 
    // ... 
} 
3

將輸出類型的功能transpose更改爲Matrix<A_Type, sizeB, sizeA>

相關問題