¿Hay un puntero inteligente que se anula automáticamente cuando su objetivo es destruido en C ++

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

Pregunta

He encontrado QPointer . ¿Hay alguna otra?

¿Fue útil?

Solución

Boost - la weak_ptr tiene algunas características interesantes que hacen que sea seguro de usar, si también está usando shared_ptr. A mantener una referencia a una instancia weak_ptr que es administrado por la vida shared_ptr. Cuando es necesario utilizar la instancia subyacente, convertirlo en una instancia shared_ptr utilizando el constructor de la clase shared_ptr, o el método lock. La operación fallará si se ha eliminado la instancia subyacente. El uso es el hilo de seguridad de la misma manera como la clase 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
}

Otros consejos

"boost :: weak_ptr" funciona muy bien con "boost :: shared_ptr" (también disponible en TR1)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top