ExpertiDict

C++ · Avançado · Inglês · Técnico

enable shared from this

ɪˈneɪbəl ʃɛɹd frʌm ðɪssubstantivo

Classe base std::enable_shared_from_this que permite a um objeto já gerenciado por shared_ptr obter outro shared_ptr para si com shared_from_this(), compartilhando o mesmo bloco de controle.

Onde usar

Necessária quando um objeto registra callbacks assíncronos que precisam mantê-lo vivo. Em code review, aparece junto da exigência de criar o objeto sempre via make_shared.

Em código

struct No
  : std::enable_shared_from_this<No> {
  std::shared_ptr<No> eu() {
    return shared_from_this();
  }
};
auto n = std::make_shared<No>();
auto m = n->eu();  // contagem = 2

Exemplos

The class inherits enable shared from this so callbacks can keep it alive.

A classe herda de enable shared from this para os callbacks a manterem viva.

Calling shared from this on an object not owned by a shared pointer throws.

Chamar shared from this em objeto que não pertence a um shared pointer lança exceção.

Cuidado

Chamar shared_from_this() em objeto não gerenciado por shared_ptr lança std::bad_weak_ptr desde o C++17.

Sinônimos

enable_shared_from_this

Veja também

Todos os termos de C++