मैं समझ नहीं पा रहा हूं कि कैसे std::enable_shared_from_this::shared_from_this
एक साझा पिनटर देता है जो मौजूदा पॉइंटर के साथ स्वामित्व साझा करता है। दूसरे शब्दों में आप this कार्य करें:कैसे std :: enable_shared_from_this :: shared_from_this काम करता है
std::shared_ptr<Foo> getFoo() { return shared_from_this(); }
तो जब आप getFoo
फोन कैसे वास्तव में इसके साथ स्वामित्व साझा करने के अन्य shared_ptr
है और एक अलग shared_ptr
है कि एक ही this
का मालिक बनाने के लिए नहीं क्या मिलता है।
मुझे समझने में सक्षम होने के लिए यह समझने में सक्षम होना चाहिए कि कुछ ऑब्जेक्ट से shared_ptr कैसे बनाया जाए, जो सभी एक ही रेफ गिनती को बढ़ाते हैं और अलग shared_ptr
एस प्रारंभ नहीं करते हैं।
http://en.cppreference.com/w/cpp/memory/enable_shared_from_this नोटों – StoryTeller
मैं नोट्स सामान्य कार्यान्वयन का वर्णन है कि देखा है पर एक नज़र डालें । इससे पहले, मैंने भी सोर्स कोड को देखा है। लेकिन यह समझ में नहीं आया कि इस 'weak_ptr' को प्रारंभ किया जा रहा है जब पहली साझा_प्टर कक्षा के बाहर बनाया गया है। एक वर्ग यह नहीं जान सकता कि हमने कुछ 'shared_ptr' में अपने सूचक को encapsulated किया है। – Narek
आपको 'std :: shared_ptr' के स्रोत पर भी एक नज़र डालना चाहिए। नोट स्पष्ट रूप से निर्दिष्ट करता है कि वहां बेस कोड के रूप में 'std :: enable_shared_from_this' की उपस्थिति का पता लगाने के लिए कोड है। – StoryTeller