Non riesco proprio a capire come std::enable_shared_from_this::shared_from_this
restituisca un pinter condiviso che condivide la proprietà con il puntatore esistente. In altre parole si fa this:Come std :: enable_shared_from_this :: shared_from_this works
std::shared_ptr<Foo> getFoo() { return shared_from_this(); }
Così, quando si chiama getFoo
come fa esattamente quello che ottiene è l'altro shared_ptr
per condividere la proprietà con e non per creare un separato shared_ptr
che possiede lo stesso this
.
Ho bisogno di capire questo per essere in grado di capire come creare shared_ptr da alcuni oggetti che aumentano tutti lo stesso conteggio ref e non inizializzare separati shared_ptr
s.
http://en.cppreference.com/w/cpp/memory/enable_shared_from_this Date un'occhiata alle note – StoryTeller
ho visto le note che descrivono l'applicazione comune . Prima di allora, ho anche guardato il codice sorgente. Ma non ho capito come questo 'weak_ptr' viene inizializzato quando first_ptr è bing creato al di fuori della classe. Una classe non può sapere che abbiamo incapsulato il suo puntatore in alcuni 'shared_ptr'. – Narek
Si dovrebbe anche dare un'occhiata al sorgente di 'std :: shared_ptr'. La nota specifica chiaramente che esiste un codice che rileva la presenza di 'std :: enable_shared_from_this' come una classe base. – StoryTeller