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:

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) {}
 
}
au lieu de
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) {}
Et je ne comprends pas bien pourquoi.

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.