2 votes

Comment retourner la même classe de modèle en réutilisant les paramètres du modèle dans un ordre différent ?

J'ai cette classe :

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;
    };
}

comme vous pouvez le voir ici, je veux juste avoir un nouveau Matrix de taille B*A.

mais je reçois cette erreur :

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

Des idées ?

4voto

πάντα ῥεῖ Points 15683

Il n'y a pas de conversion implicite pour Matrix<int,2,3> a Matrix<int,3,2> en effet. Ce sont différents types.

Pour le corriger, déclarez explicitement le type de retour avec transpose() :

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

3voto

Semyon Burov Points 837

Modifier le type de sortie de la fonction transpose a Matrix<A_Type, sizeB, sizeA> .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X