मैं एक वर्ग A
किस प्रकार std::unique_ptr
के एक क्षेत्र है है:ले जाएँ स्वामित्व एसटीडी :: unique_ptr
class A
{
public:
std::unique_ptr pointer;
// class body
};
और कहीं कोड में, मैं कुछ std::shared_ptr
रों को जो बिंदु उपयोग कर रहा हूँ एक ही वस्तु अब मैं अपनी कक्षा में इस std::unique_ptr
पर स्वामित्व को स्थानांतरित करना चाहता हूं, ताकि यदि सभी shared_ptr
एस नष्ट हो जाएंगे, तो मेरा ऑब्जेक्ट तब तक जीवित रहेगा जब तक यह unique_ptr
जीवित रहेगा।
मेरा सवाल है - क्या std::shared_ptr
से std::unique_ptr
से स्वामित्व को स्थानांतरित करना संभव है और यदि हां, तो मैं यह कैसे कर सकता हूं?
तर्कसंगत रूप से ऐसा परिदृश्य मुझे समझ में नहीं आता है। मान लीजिए कि ओवरशिप को स्थानांतरित करना संभव है, लेकिन आप ऐसा कर सकते हैं * केवल जब आप सुनिश्चित हैं कि केवल ** एक ** 'shared_ptr' जीवित है; यदि ऐसा है, तो आप अभी भी 'ए' के सदस्य के रूप में 'shared_ptr' का उपयोग कर सकते हैं और ** ** दिखाएं कि यह 'unique_ptr' है। – Nawaz
"मेरी कक्षा में इस std :: unique_ptr के स्वामित्व को स्थानांतरित करें, ताकि यदि सभी shared_ptrs नष्ट हो जाएंगे, तो मेरा ऑब्जेक्ट तब तक जीवित रहेगा जब तक यह अद्वितीय_प्टर जीवित रहेगा ..." क्यों नहीं ए में एक और साझा किया जाता है? – qPCR4vir
क्या होगा यदि एन अन्य साझा ptrs एक ही ऑब्जेक्ट को इंगित करते हैं? आप इसे कैसे संभालेंगे? 'shared_ptr' किसी कारण के लिए 'रिलीज' विधि प्रदान नहीं करता है। –