IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Destructeur de liste chainee


Sujet :

C++

  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Par défaut Destructeur de liste chainee
    Bonjour pour la 4 eme fois de la journee...

    J ai une ptite question , tt d abord voici le code :

    liste.h
    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
     
    // 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() ;
     
          // Autres methodes et operateurs
          	maillon<T>* gonext();
    };
     
    // Classe liste
    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() ;
    };
    mes destructeurs:
    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>
    liste<T> :: ~liste()
    {
      if ((tete != NULL) && ((*tete).gonext() != NULL))
        {	   
               maillon<T>* parcours;
               maillon<T>* apresparcours;
               apresparcours = (*tete).gonext();
               parcours = tete;
     
               do 
    	   {
    	     delete parcours;
    	     parcours = apresparcours;
    	     apresparcours = (*apresparcours).gonext();
    	   } while ((*apresparcours).gonext() != NULL );
     
          delete parcours;
          if (apresparcours != NULL)
          delete apresparcours;
        }
    // delete tete;
    //  delete fin;
    }
     
    template <class T>
    maillon<T> :: ~maillon ()
    {
     delete this;
    }
    J aimerai savoir si mes pointeurs tete et fin d une liste sont supprimes , je sais que je supprime les objets POINTÉS mais est ce que je supprime les pointeurs eux memes ?

    merci

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Par défaut
    hmm debuggeur me dit qu il y a une erreur de segmentation ds le destructeur de maillon...

    Pas le droit de faire delete this ?

  3. #3
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    Citation Envoyé par Treuze
    Pas le droit de faire delete this ?
    ben non. ça veut dire que tu tentes de détruire l'objet dans son propre destructeur. donc après delete this, le destructeur il fait quoi ?

    quand tu fais delete ptr, ça appelle le destructeur de l'objet
    ici le destructeur fait delete ptr également. c'est un poil récurrent cette histoire (ça ne boucle pas indéfiniment vu la nature de la récurrence. ça plante directe )

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Par défaut
    Donc maillon(){} ?

  5. #5
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    voilà. voire même pas de destructeur du tout (garder celui par défaut en somme puisqu'on n'a pas besoin de faire plus)

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Par défaut
    ok merci ! et pour ma premiere question ? une idee ?

Discussions similaires

  1. Erreur ds destructeur ds liste chainee
    Par Treuze dans le forum C++
    Réponses: 2
    Dernier message: 13/04/2006, 18h34
  2. [LG]Listes chainées avec pointeur
    Par PaowZ dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2004, 19h49
  3. [LG]liste chainee + pointeur + affichage
    Par k_ro dans le forum Langage
    Réponses: 6
    Dernier message: 17/01/2004, 13h58
  4. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34
  5. [LG]suppression dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 9
    Dernier message: 16/12/2003, 21h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo