Yat-il un pointeur intelligent qui est automatiquement nulled lorsque sa cible est détruite en C ++
-
05-09-2019 - |
Question
Je l'ai trouvé QPointer . Y a-t-il des autres?
La solution
Boost - le weak_ptr
a quelques fonctionnalités intéressantes qui le rendent sûr à utiliser, si vous utilisez également shared_ptr
. Vous gardez une référence weak_ptr
à une instance qui est géré par la durée de vie shared_ptr
. Lorsque vous devez utiliser l'instance sous-jacente, le convertir en une instance shared_ptr
utilisant le constructeur de la classe shared_ptr
, ou 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 façon 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
}
Autres conseils
"boost :: weak_ptr" fonctionne très bien avec "boost :: shared_ptr" (également disponible en TR1)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow