Yat-il un pointeur intelligent qui est automatiquement nulled lorsque sa cible est détruite en C ++

StackOverflow https://stackoverflow.com/questions/909437

Question

Je l'ai trouvé QPointer . Y a-t-il des autres?

Était-ce utile?

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
scroll top