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

SL & STL C++ Discussion :

Vector et pointeurs


Sujet :

SL & STL C++

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut Vector et pointeurs
    Bonjour à tous,

    J'ai une class qui possède un pointeur vers un objet. Celui-ci peut ou pas être initialisé durant l'utilisation de la classe:

    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
     
    class MaClass
    {
    public:
       MaClass();
       ~MaClass();
    private:
       MaClass2* m_oMonObjet;
    }
     
    MaClass::MaClass()
    : oMonObjet(NULL)
    {
     
    }
     
    MaClass::~MaClass()
    {
       if(m_oMonObjet)
       {
          delete m_oMonObjet;
          oMonObjet = NULL;
       }
    }
    Le soucis, c'est que j'instancie MaClass et je positionne l'instance dans un Vector (push_back). Celui-ci fait une recopie de l'objet et supprime l'original. Par conséquent, le destructeur de MaClass est appelé deux fois. Comme il a détruit m_oMonObjet une première fois, l'instance dans le vector est alors inutilisable.

    C'est normal, je connais comment le Vector fonctionne mais par contre, comment faire? Est-ce qu'il faut plutôt faire un vector de pointeur? Faire des pointeurs intelligent? Redéfinir le constructeur par recopie?

    Merci beaucoup,

    A bientôt

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Pointeurs intelligents à base de comptage de référence (boost.shared_ptr).

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Ok, merci Laurent

  4. #4
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    J'appuie la réponse de Laurent car il y a peu j'ai encore eu la possibilité de constater l'efficacité de cette solution dans ces cas là!
    Vraiment bonne solution de boost.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vector et pointeurs
    Par Ardeciel dans le forum SL & STL
    Réponses: 2
    Dernier message: 25/03/2007, 11h55
  2. Réponses: 13
    Dernier message: 03/10/2005, 18h06
  3. pb avec vectors de pointeurs
    Par e-teo dans le forum SL & STL
    Réponses: 5
    Dernier message: 27/07/2005, 14h11
  4. Réponses: 8
    Dernier message: 26/08/2004, 18h59
  5. vector de pointeurs sur des objet
    Par jean-bobby dans le forum SL & STL
    Réponses: 26
    Dernier message: 06/08/2004, 14h54

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