Esiste un puntatore intelligente che viene reso nullo automaticamente quando il suo bersaglio è distrutto in C ++
-
05-09-2019 - |
Domanda
Ho trovato QPointer . Ce ne sono altri?
Soluzione
Boost - il weak_ptr
ha alcune caratteristiche interessanti che lo rendono sicuro da usare, se si utilizza anche shared_ptr
. Continui a un riferimento weak_ptr
a un'istanza che viene gestito da vita shared_ptr
. Quando è necessario utilizzare l'istanza sottostante, convertirlo in un'istanza shared_ptr
utilizzando il costruttore della classe shared_ptr
, o il metodo lock
. L'operazione avrà esito negativo se l'istanza sottostante è stato eliminato. L'utilizzo è thread-safe nello stesso modo come 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
}
Altri suggerimenti
"boost :: weak_ptr" funziona molto bene con "boost :: shared_ptr" (disponibile anche in TR1)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow