Existe um ponteiro inteligente que é automaticamente anulado quando o seu alvo é destruído em C ++

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

Pergunta

Eu encontrei QPointer . Existem quaisquer outros?

Foi útil?

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