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 :

Class imbriqué : problème de delete


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 151
    Par défaut Class imbriqué : problème de delete
    Bonsoir,

    J'ai une classe sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class B;
    class A{
      protected:
        vector <B *> m_b;
        ...
      public:
        ~virtual A();
    };
     
    class B : public A{
    ...
    };
    Et j'ai un problème pour supprimer les objets A.
    Je parcours le vecteur m_b en faisant un delete à chaque itération, mais j'ai core dump... Je ne comprend pas.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Bonjour,
    ce n'est pas plutôt

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 151
    Par défaut
    Oui effectivement, j'ai tapé ce message rapidement.

  4. #4
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Montre comment tu alloue et delete les pointeur dans ton vecteur
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  5. #5
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    1) Pourquoi avoir un vector<B*> et pas vector<A *> en utilisant le polymorphisme?

    2) Effectivement, comme l'ont dit mes collègues au dessus, il faudrait un peu plus de code pour détecter ton problème.
    Juste une petite remarque : il existe chez Boost un conteneur spécial pointeur qui te décharge de toute désallocation, c'est automatique...
    -> Tu trouveras de la doc ICI

    Bonne continuation,

    Poukill

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Ouais, vive les ptr_containers!

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 151
    Par défaut
    Citation Envoyé par poukill Voir le message
    1) Pourquoi avoir un vector<B*> et pas vector<A *> en utilisant le polymorphisme?
    En fait, la classe B représente un sous programme et son vecteur (de sous programme) ses appels de sous programme.

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    fonction1(){
      fonction2();
      fonction3();
    }
    fonction2(){
    }
    fonction3(){
    }
    Donc on aura 3 objets B :
    B1 son vecteur contiendra B2 et B3
    B2 vecteur vide
    B3
    L'objet A servira à stocker l'ensemble des sous programme.

    Voici le destructeur de A :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     	vector<Sub_program *>::iterator iter_prog;
     	for(iter_prog = m_sub_programs.begin(); iter_prog != m_sub_programs.end(); iter_prog++){
     		if(*iter_prog != NULL)
     			delete (*iter_prog);
     	}
    Celui de B détruit seulement ces données à détruire.

    Edit:
    Pour l'allocation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub_program * sprog = new Sub_program(adress_temp);
    // Ajoute au vecteur de la classe A
    m_program->add_sub_program(sprog);
    Un objet Sous_program contient donc lui aussi des pointeurs vers d'autres objets Sous_program.

    Je suis en train de me renseigner sur boost. Merci pour le lien.

Discussions similaires

  1. [Débutant] Visual Studio 2010 (VB) - Problème de classes imbriquées
    Par patrickvier dans le forum VB.NET
    Réponses: 5
    Dernier message: 21/09/2012, 12h15
  2. Problème classe imbriquée
    Par eento dans le forum Android
    Réponses: 8
    Dernier message: 08/08/2012, 02h30
  3. Réponses: 11
    Dernier message: 11/03/2011, 10h36
  4. Problème de DELETE
    Par WinZy dans le forum Access
    Réponses: 2
    Dernier message: 21/09/2005, 12h58
  5. [DLL/classe template] problème de link
    Par Bob.Killer dans le forum C++
    Réponses: 7
    Dernier message: 31/08/2005, 18h56

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