の仕組み私はちょうどstd::enable_shared_from_this::shared_from_this
は、既存のポインタで所有権を共有する共有ピンターを返す方法を理解することはできません。言い換えれば、あなたはthisの操作を行います。getFoo
を呼び出すときのstd :: enable_shared_from_this :: shared_from_thisが
std::shared_ptr<Foo> getFoo() { return shared_from_this(); }
だから、どのように正確にそれはとの所有権を共有する他のshared_ptr
であり、同じthis
所有している別のshared_ptr
を作成しないものを手に入れるん。
shared_ptrを作成して同じrefカウントを増やし、個別のshared_ptr
を初期化しないオブジェクトから、どのようにshared_ptrを作成するかを理解する必要があります。
がhttp://en.cppreference.com/w/cpp/memory/enable_shared_from_this私は一般的な実装を説明する注意事項を見てきました – StoryTeller
ノートを見てください。それ以前は、ソースコードも見てきました。しかし、最初にshared_ptrがクラス外に作成されたときに、この 'weak_ptr'がどのように初期化されているのか理解できませんでした。あるクラスは、 'shared_ptr'にポインタをカプセル化したことを知ることができません。 – Narek
'std :: shared_ptr'のソースも見てください。このノートでは、 'std :: enable_shared_from_this'の存在を基底クラスとして検出するコードがあることを明確に示しています。 – StoryTeller