Bonjour à toutes et à tous,
Je suis entrain de coder une structure de données "Liste" comprenant des "Maillon". Afin de parcourir celle-ci plus facilement, je souhaite ajouter une classe imbriquée "Iterateur" cependant je rencontre quelques difficultés.
Code allégée de la classe "Liste" :
Code allégée de la classe "Maillon" :
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 template<class T> class Liste { friend class Maillon<T>; private: Maillon<T> *_tete, *_dernier; public: Liste(); Liste(const Liste<T>& l); Liste<T>& operator=(const Liste<T>& l); ~Liste(); Liste<T>& put_back(const Maillon<T>& m); Liste<T>& put_back(const T& val); Liste<T>& put_back(const Liste<T>& l); void flushMaillon(); bool isEmpty() const; void toString() const; // Déclaration de la classe interne Iterateur class Iterateur { private: Maillon<T> *m; public: Iterateur():m(NULL {} Iterateur(const Maillon<T>& value): m(value) {} bool operator!=(const Iterateur& it) { return (m != it.m); } Iterateur& operator++() { m = m->suivant; return *this; } }; Iterateur begin() { return Iterateur(_tete); } Iterateur end() { return Iterateur(); } };
J'obtiens des erreurs via la ligne suivante (présente dans mon main) :
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 template<class T> class Maillon { friend class Liste<T>; private: T _data; Maillon<T> *_suivant; public: Maillon(); Maillon(const Maillon<T>& m); Maillon(const T& value); ~Maillon(); Maillon<T>& operator=(const Maillon& m); };
Les erreurs sont les suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Liste<int>::Iterateur it(l3.begin());
Je suis un peu bloqué car je ne vois pas à quel niveau ça bloque, je "comprends" le problème mais suit dans l'incapacité de le résoudre. J'ai regardé des classes imbriquées similaires mais cela ne m'a aidé en rien ..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 erreur: invalid user-defined conversion from Maillon<int>* to const Maillon<int>& [-fpermissive] erreur: invalid conversion from Maillon<int>* to const int& [-fpermissive] erreur: initializing argument 1 of Maillon<T>::Maillon(const T&) [with T = int] [-fpermissive]
Merci d'avance.
Partager