2010-07-22 6 views
2

Je pense qu'il me manque quelque chose de simple ici. J'utilise le shared_ptr de Boost.C++ shared_ptr - attache à un nouveau pointeur brut?

shared_ptr<Foo> pA(new Foo()); 
shared_ptr<Foo> pB(new Foo()); 

Maintenant, je veux passer pB il contient le contenu de pA, décrémenter le compte de référence de pB. Comment puis-je faire ceci?

+0

"' std :: tr1 de Boost :: shared_ptr'" est un peu bizarre, vous ne pensez pas? :) Boost a 'boost :: shared_ptr', TR1 a' std :: tr1 :: shared_ptr', et C++ 0x a 'std :: shared_ptr'. – GManNickG

+0

Boost contient également une bibliothèque TR1 qui inclut shared_ptr qui résout std :: tr1 :: shared_ptr en std :: shared_ptr natif de la librairie C++, ou si tel n'est pas le cas pour boost :: shared_ptr. Donc std :: tr1 :: shared_ptr de boost est valide et significatif. –

Répondre

9

Tout se fait automatiquement:

pB = pA; // pB ref count is decrement (in this case causing the value to be released) 
      // pB is then made to point at the same value as pA 
      // Thus incrementing the refCount.