C++ · Avançado · Inglês · Técnico
enable shared from this
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 = 2Exemplos
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