Esiste un puntatore intelligente che viene reso nullo automaticamente quando il suo bersaglio è distrutto in C ++

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

Domanda

Ho trovato QPointer . Ce ne sono altri?

È stato utile?

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