Bonjour,
Je débute avec l'utilisation des smart pointers et je bute sur plusieurs petits cas pratique.
Tout d'abord j'ai une classe abstraite A qui contient un objet B. J'aimerais utiliser les smart pointers pour définir cette composition, mais pour arriver à compiler il faut que j'écrive:
au lieu de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class A { private: boost::scoped_ptr<B> b_; public: /// constructor1 A(B* b) : b_(b) {} }
Et je ne comprends pas bien pourquoi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 /// constructor 2 A(boost::scoped_ptr<B> b) : b_(b) {} /// constructor 3 A(B) : b_(b) {}
Ensuite j'avoue que je ne comprends pas bien quand il faut utiliser les shared_ptr plutôt que les scoped_ptr (j'ai lu le tutoriel de L.Joly sur le sujet, mais il mentionne que très sommairement les scoped_ptr). Par défaut j'utilise les scoped_ptr pour les objets seul, et les shared_ptr pour les collections (std::vector<shared_ptr<B> >)
D'avance merci de vos conseils.
Partager