¿Hay un puntero inteligente que se anula automáticamente cuando su objetivo es destruido en C ++
-
05-09-2019 - |
Pregunta
He encontrado QPointer . ¿Hay alguna otra?
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