Bonjour à tous,
(Il n'y a pas à dire, dans les sous-forums, on lit moins...)
Je reviens à la charge avec un problème sur les shared_ptr<>.
J'ai deux classes, mettons la classe ClasseGenerale et la classe PetiteClasse, définies comme suit :
Et la classe PetiteClasse :
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 // Dans ClasseGenerale.h class ClasseGenerale { public: ClasseGenerale(); ~ClasseGenerale(); private: boost::shared_ptr<PetiteClasse> Util; } // Dans ClasseGenerale.cpp // ... ClasseGenerale::ClasseGenerale() { // Initialisation de Util. Util.reset(new PetiteClasse(this)); // !!! Comme ça qu'on fait ? }
Je voudrais pouvoir faire le double lien classique avec des pointeurs de boost. Le problème c'est que dans la méthode de la classe "plus générale" je ne sais pas comment passer en argument pour que cela fonctionne.
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 // Dans PetiteClasse.h class PetiteClasse { public: PetiteClasse(ClasseGenerale* prochainParent); ~PetiteClasse(); private: boost::shared_ptr<ClasseGenerale> parent; } // Dans PetiteClasse.cpp // ... PetiteClasse::PetiteClasse(boost::shared_ptr<ClasseGenerale> prochainParent) { // Initialisation de parent. parent = prochainParent; }
Avec enabled_shared_from_this.hpp je ne comprends pas non plus pourquoi ça ne marcherait pas, si je fais :
Pouvez-vous me dire ce qui ne va pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Util.reset(new PetiteClasse(boost::shared_ptr<ClasseGenerale>(this)))
Merci d'avance !
Partager