bonjours, je code actuellement une classe template contenant un vecteur de class. celui ci tourne bien mais pour l'ameliorer j'aurais aimer surcharger l'operateur[] pour utiliser:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
montemplate<maClass*> m(2);//créé un template de deux éléments
m[0] = (maclass*) unElement;
m[1] = masousClass*) unAutreelement;
pour ce faire j'ai ecris ceci:

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
template<class T>
class Vector{
	public:
		Vector();
		Vector(int);
		~Vector();
 
		void add(T data);
		int size() {return nbrElement;}
		T operator[](int);
		void supElem(int);
 
	private:
		Noeud<T> *data;
		int nbrElement;
 
		Noeud<T>* nodeAt(int index);
};
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
template <class T>
T Vector<T>::operator[](int index)
{
	return nodeAt(index)->getData();
}
mais lors de la compilation j'obtiens cette erreur:
error: lvalue required as left operand of assignment
si je remplace mon template par un pointeur simple de maclass cela fonctionne.


maintenant si au lieu de déclarer mon vecteur comme ceci: Vector<maclass*>
je le declare comme cela: Vector<maclass>
l'erreur disparaît (il utilise le constructeur de copie donc), or le but et ici de n'utiliser que des pointeurs pour stocker, modifier et relire des valeurs restant juste. (et donc modifié a partir du pointeur)

voila, si quelqu'un a une idée... moi je comprends pas trop pourquoi il ne copie pas l'adresse du pointeur...