2009-05-26 4 views

Répondre

8

Boost - le weak_ptr a quelques fonctionnalités intéressantes qui le rendent sûr à utiliser, si vous utilisez également shared_ptr. Vous conservez une référence weak_ptr à une instance gérée par shared_ptr durée de vie. Lorsque vous devez utiliser l'instance sous-jacente, convertissez-la en instance shared_ptr à l'aide du constructeur de la classe shared_ptr ou de la méthode lock. L'opération échouera si l'instance sous-jacente a été supprimée. L'utilisation est thread-safe de la même manière que la classe shared_ptr:

shared_ptr<int> p(new int(5)); 
weak_ptr<int> q(p); 

// some time later 

if(shared_ptr<int> r = q.lock()) 
{ 
    // use *r 
} 
+0

Merci. Je n'étais pas au courant que weak_ptr avait ce comportement. Je me demande combien je paie pour le comportement de comptage des références inutiles. Quoi qu'il en soit, votre réponse a été la première, je pense. Marquage comme meilleur. –

6

« boost :: weak_ptr » fonctionne très bien avec « boost :: shared_ptr » (également disponible en TR1)

Questions connexes