Bonsoir à tous,

j'ai à faire un projet et implémenter une classe matrice du type:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
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]