मैं एक गैर-संदर्भित स्मार्ट पॉइंटर चाहता हूं जो auto_ptr
और shared_ptr
के कुछ उपयोगी पहलुओं को जोड़ सकता है। मुझे लगता है कि सी ++ 0x का unique_ptr
आखिरकार मुझे क्या चाहिए, लेकिन मुझे कुछ ऐसा चाहिए जो विजुअल स्टूडियो 2008 और एक्सकोड (जीसीसी 4.2) पर संकलित होगा।क्या कोई सामान्य स्मार्ट पॉइंटर है जैसे auto_ptr और shared_ptr जिसे C++ 0x की आवश्यकता नहीं है?
कार्यक्षमता की आवश्यकता है:
- कारखाने तरीकों में उपयोग किए जाने योग्य है, ताकि स्वामित्व (auto_ptr) की तरह नकल पर स्थानांतरित कर रहा है
- का समर्थन करता है
release()
(auto_ptr की तरह) - आगे घोषणा के साथ इस्तेमाल किया जा सकता (जैसे share_ptr)
तो, मुझे लगता है कि यह वास्तव में बेहतर है auto_ptr
। क्या ऐसा कुछ भी है जो इसे बढ़ावा देने या कहीं और करता है (ध्यान दें: मेरे पास लोकी के चारों ओर अपने सिर को लपेटने का समय नहीं मिला है)? या मुझे बस अपना खुद का रोल करना चाहिए?
संपादित करें: मैं बस auto_ptr
के बारे में अधिक पढ़ रहा है - यह लग रहा है जैसे आप आगे घोषणाओं के साथ उपयोग कर सकते हैं अगर आप यह सुनिश्चित करें कि वर्ग हैडर प्रत्येक .cpp फ़ाइल स्मार्ट के साथ शीर्ष लेख का संदर्भ देता है में शामिल है सूचक (उदाहरण के लिए GotW देखें)। किसी को भी इस पर अंगूठे का कोई सामान्य सलाह या नियम मिला है?
EDIT2: साझा_ptr कारण स्वीकार्य नहीं है क्योंकि मुझे रिलीज() विधि की आवश्यकता है क्योंकि मैं कारखाने के तरीकों को पेश करके कुछ विरासत कोड को जोड़ रहा हूं, लेकिन इसे कुछ मैन्युअल सूचक स्वामित्व कोड के साथ सह-अस्तित्व में होना है। कोडबेस के दौरान shared_ptr का उपयोग करना बहुत अच्छा होगा, लेकिन एक बड़ा काम होगा।
EDIT3: अंत में, auto_ptr
नौकरी के लिए पर्याप्त था जब मैंने आगे के समावेशन के quirks की खोज की। पॉइंटर के वैकल्पिक विलोपन की अनुमति देने के लिए shared_ptr
के लिए एक कस्टम डिलीटर लिखना भी दिलचस्प होगा।
यह वही है जो मैं auto_ptr का उपयोग करता हूं। जब तक मैंने बूस्ट का उपयोग शुरू नहीं किया (या ऐसी परिस्थितियों में जहां मैं बूस्ट का उपयोग नहीं कर सकता)। –
https://github.com/codenrun/auto_ptr_custom पर एक नज़र डालें। यह इंटरफ़ेस जैसे auto_ptr पर कस्टम डिलीटर जोड़ता है। – fizzbuzz