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:
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.
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; } }
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
Partager