Au moment de la destruction de mes listes, le programme me fait une ptite bouclme infinie , comprends pas pourquoi : sur papier ca marche ...
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 template <class T> liste<T> :: ~liste() { if ((tete != NULL) && ((*tete).gonext() != NULL)) { maillon<T>* parcours; maillon<T>* apresparcours; apresparcours = (*tete).gonext(); parcours = tete; while ( (*apresparcours).gonext() != NULL ); { cout << (*parcours).valeur() << endl ; delete parcours; parcours = apresparcours; apresparcours = (*apresparcours).gonext(); } delete parcours; } delete fin; fin = NULL; tete = NULL; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 template <class T> maillon<T>* maillon<T> :: gonext() { return suivant; }
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 // Classe maillon template <class T> class maillon { // Champs prives private: T data ; maillon<T> *suivant ; // Forme canonique de Coplien public: maillon(); maillon(const maillon<T>&) ; maillon(const T); ~maillon() ; maillon<T>& operator=(const maillon<T>&) ; maillon<T>& operator=(const T); // Autres methodes et operateurs maillon<T>* gonext(); maillon<T>& modifvaleur(const T); maillon<T>& modifpointeur(maillon<T>&); maillon<T>& pointeurnull(); T valeur() const; void affichemaillon(); };Il n y a rien ds le destructeur de 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 template <class T> class liste { // Champs prives private: maillon<T>* tete; maillon<T>* fin ; // Forme canonique de Coplien public: liste() ; liste(const liste<T>&) ; ~liste() ; liste<T>& operator=(const liste<T>&) ; // Ajout de maillons liste<T>& operator+ (const T) ; liste<T>& operator+ (const maillon<T>&) ; liste<T>& operator+ (const liste<T>&) ; // Suppression de maillons liste<T>& operator- (const T) ; // suppression de la premiere occurence de T liste<T>& operator- (int) ; // suppression du maillon d'indice donne void supprime_tete() ; // supprime la tete de la liste // Entrees-sorties void affiche () const ; // Fonction constante qui ne peut pas modifier les champs de la classe // Autres methodes et operateurs int longueur(); };
Voila , je sais plus quoi faire avec ca ...
Partager