[Résolu] Classe Matrix<T>
Bonsoir à tous,
j'ai à faire un projet et implémenter une classe matrice du type:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
template <class T>
class Matrix {
public:
int nb_lines;
int nb_columns;
T** mat;
// ... constructeurs, fonctions membres
} |
et je dois surcharger l'opérateur [] pour admettre l'écriture suivante dans un fichier .c telle par exemple :
Code:
1 2 3 4
|
...
std::cout<<m[i][j]; // const monnamespace::Matrix<double> &m passé en paramètre d'une fonction d'affichage
... |
voilà ce que j'ai écrit dans ma classe (je sais c'est très moche et surement faux mais je suis débutant alors je ruse ;) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
int i_stat,j_stat;
bool eval = false;
T& operator [] (const int & tmp) {
if (eval == false) {
if (tmp >= nb_lines) {
cerr << "\nERREUR: indice hors de domaine\n";
exit(1);
}
i_stat = tmp;
return;
}
else {
if (tmp >= nb_columns) {
cerr << "\nERREUR: indice hors de domaine\n";
exit(1);
}
eval = false;
j_stat = tmp;
return mat[i_stat][j_stat];
}
} |
et voilà ce que j'ai à la compile :
Citation:
g++ testMatrix.c -c
testMatrix.c: In function `void affiche(const umlv::Matrix<double>&, const umlv::Matrix<double>&)':
testMatrix.c:11: error: passing `const umlv::Matrix<double>' as `this' argument of `T& umlv::Matrix<T>::operator[](const int&) [with T = double]' discards qualifiers
testMatrix.c:11: error: invalid types `double[int]' for array subscript
matrixbeta.h: In member function `T& umlv::Matrix<T>::operator[](const int&) [with T = double]':
testMatrix.c:11: instantiated from here
matrixbeta.h:126: error: return-statement with no value, in function returning 'double&'
make: *** [matrix.o] Erreur 1
donc je fais quelque chose de très mal mais j'ai entendu dire que la gestion des [][] était assez délicate à coder et qu'il fallait mieux utiliser les "()" à la place, oui mais voilà, c'était sans compter sur la perversité de mes profs ... je dois le faire.
Si quelqu'un peut me donner un tuyau car je bloque depuis 3 heures et j'ai d'autres projets qui attendent leurs tours .... :(
Merci pour le coup de main, vais manger et vous lis ensuite, j'espère !!
BYE
[Balise [code] et [quote] ajouté par netah_25 - Merci d'y penser a l'avenir][/b]