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:
pour ce faire j'ai ecris ceci:
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;
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); };mais lors de la compilation j'obtiens cette erreur:
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(); }
si je remplace mon template par un pointeur simple de maclass cela fonctionne.error: lvalue required as left operand of assignment
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...
Partager