Existe um ponteiro inteligente que é automaticamente anulado quando o seu alvo é destruído em C ++
-
05-09-2019 - |
Pergunta
Eu encontrei QPointer . Existem quaisquer outros?
Solução
impulsionar - o weak_ptr
tem algumas características interessantes que torná-lo seguro para usar, se você também estiver usando shared_ptr
. Você mantém uma referência weak_ptr
a uma instância que é gerido pela vida shared_ptr
. Quando você precisa usar a instância subjacente, convertê-lo para uma instância shared_ptr
usando o construtor da classe shared_ptr
, ou o método lock
. A operação irá falhar se a instância subjacente foi excluído. O uso é thread-safe da mesma forma como a 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
}
Outras dicas
"boost :: weak_ptr" funciona muito bem com "boost :: shared_ptr" (também disponível em tr1)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow