Bonjour,
Je cherche à savoir s'il est possible de connaitre le mode de construction d'un objet CObjet, à savoir : construit par new ou non construit par new.
J'ai une classe CConteneur qui possède un pointeur sur cet objet et je voudrais savoir, lors de la destruction de la classe CConteneur, s'il faut appeler le delete CCobjet ou pas.
Il y a bien l'idée de définir l'opérateur new pour la classe CObjet, cela règle ce problème mais cela ne le règle pas en cas d'héritage (cas où la classe CConteneur reçoit un pointeur sur CObjet2) ou alors, il faut redéfinir l'opérateur new de toute la hiérarchie.
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 class CObjet { public: CObjet(void); ~CObjet(void); bool est_construit_par_new(void) const; }; class CObjet2 : public CObjet { }; class CConteneur { public: CConteneur(CObjet *Objet) : m_objet(Objet) { } ~CConteneur(void) { if(m_objet->est_construit_par_new() == true) delete m_objet; } private: CObjet *m_objet; };
Est ce que quelqu'un aurait une autre idée intelligente ?
Partager