[POO] le destructeur ne fonctionne pas
j'ai écrit une classe implémentant une liste doublement chainée circulaire,le destructeur ne fonctionne pas , je travaille sous xp avec code::blocks .
merci d'avance :)
le code :
Code:
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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| /*Expression.h*/
#include <iostream>
using namespace std;
class Expression{
public:
Expression();
bool insertion_dans_liste_vide (int donnee);
bool ins_fin_liste (int donnee);
void affiche();
~Expression();
struct ElementListe {
int donnee;
ElementListe *suivant;
ElementListe *precedent;
};
private:
int taille;
ElementListe *debut;
ElementListe *fin;
};
/*Expression.cpp*/
#include "Expression.h"
Expression::Expression(){
debut = NULL;
fin = NULL;
taille = 0;
}
Expression::~Expression(){
ElementListe *courant = this->fin->precedent;
while (courant!=(this->debut)){
delete courant->suivant;
cout << "deleted !" << endl;
courant=courant->precedent;
}
cout << "everything is deleted !" << endl;
}
bool Expression::insertion_dans_liste_vide (int donnee){
ElementListe *nouveau_element;
if (!(nouveau_element = new ElementListe))
return false;
nouveau_element->donnee = donnee;
nouveau_element->precedent = nouveau_element;
nouveau_element->suivant = nouveau_element;
this->debut = nouveau_element;
this->fin = nouveau_element;
this->taille++;
return true;
}
bool Expression::ins_fin_liste (int donnee){
ElementListe *nouveau_element;
if (!(nouveau_element = new ElementListe))
return false;
nouveau_element->donnee = donnee;
nouveau_element->suivant = this->debut;
nouveau_element->precedent = this->fin;
this->fin->suivant = nouveau_element;
this->fin = nouveau_element;
this->fin->suivant = this->debut;
this->taille++;
return true;
}
void Expression::affiche(){
ElementListe *courant;
courant = this->debut;
printf("[ ");
int i=0;
while(i<(this->taille)){
printf("%d ",courant->donnee);
courant = courant->suivant;
i++;
}
printf("]\n");
} |