In the book The C++ Standard Library a pagina 91 ho letto questa storia shared_from_this()
:Perché shared_from_this non può essere utilizzato nel costruttore dal punto di vista tecnico?
Il problema è che
shared_ptr
si memorizza in un membro privato diPerson
's classe base,enable_shared_from_this<>
, alla fine del costruzione della persona.
Il frammento di codice rilevante del libro è:
class Person : public std::enable_shared_from_this<Person> {
...
};
Non capisco due cose qui:
- chi è questo
shared_ptr
che si memorizza? - come si può memorizzare da qualche parte alla fine della costruzione di
Person
? Penso che la costruzione diPerson
finisca con l'ultima dichiarazione del suo costruttore che ha scritto da me.
Capisco che ci sia weak_ptr
che non è stato ancora inizializzato.
MODIFICA: Grazie ad Angew! shared_from_this
funzionerà solo dopo che è stato creato il primo shared_ptr
a Person
. Questo shared_ptr
controllerà se la classe Person
è ereditata da enable_shared_from_this
e se sì, inizializza il suo interno weak_ptr
.
Non mi ero reso conto che probabilmente stavi solo chiedendo queste [Note] (http://en.cppreference.com/w/cpp/memory/enable_shared_from_this) –
@MarcoA. Grande, queste note sono davvero d'aiuto! – Yola