मैं सोच रहा था क्यों गतिशील सरणियों सीधे std::unique_ptr<>
द्वारा समर्थित हैं, लेकिन नहीं std::shared_ptr<>
द्वारा:std :: shared_ptr <T[]> के लिए कोई विशेषज्ञता क्यों नहीं है?
unique_ptr<int[]> ptr1(new int[n]); /// OK!
shared_ptr<int[]> ptr2(new int[n]); /// Incorrect: will not call delete[]
अद्यतन: मुझे पता चला है कि दूसरी पंक्ति में लिखा जा सकता है:
shared_ptr<int> ptr2(new int[n], default_delete<int[]>());
अब मैं मैं सोच रहा हूं कि दृश्य के पीछे क्या चल रहा है std::shared_ptr
दूसरे दृष्टिकोण के साथ काम करता है और std::unique_ptr
के समान नहीं है?
आपको क्या त्रुटि संदेश मिलता है? –
यह त्रुटि संदेश के बारे में नहीं है, यह दूसरी पंक्ति की शुद्धता के बारे में है क्योंकि यह हटाए जाने का आह्वान नहीं करता है [] – Vahid
क्या आपको 'unique_ptr' (यानी 'deleter'' के साथ एक डिलीटर निर्दिष्ट नहीं करना है टेम्पलेट पैरामीटर में कोई डिफ़ॉल्ट नहीं है)? कम से कम सुझाव दिया गया है [यहां] (http://en.cppreference.com/w/cpp/memory/unique_ptr) अगर गलत नहीं है। –
Walter