पर अद्वितीय_ptr मैं एक फ्रेम में व्युत्पन्न कक्षा में unique_ptr
का उपयोग करने की कोशिश कर रहा हूं जो बेस क्लास में unique_ptr
लेता है। कुछ की तरह:एक बेस क्लास
class Base
{};
class Derived : public Base
{};
void f(unique_ptr<Base> const &base)
{}
…
unique_ptr<Derived> derived = unique_ptr<Derived>(new Derived);
f(derived);
अगर मैं this answer सही ढंग से समझ, इस कोड को काम करना चाहिए, लेकिन यह निम्न संकलन त्रुटियों का कारण बनता:
त्रुटि C2664: 'म': 'एसटीडी से पैरामीटर 1 परिवर्तित नहीं कर सकते: : unique_ptr < _Ty> स्थिरांक एसटीडी 'को' :: unique_ptr < _Ty> & '
IntelliSense: "एसटीडी से कोई उपयुक्त उपयोगकर्ता परिभाषित रूपांतरण :: unique_ptr < व्युत्पन्न, std :: default_delete < डेर ived >> "से" स्थिरांक std :: < बेस unique_ptr, std :: default_delete < बेस >> "मौजूद है
अगर मैं f
बदलने unique_ptr<Derived> const &derived
लेने के लिए, यह ठीक काम करता है, लेकिन यह नहीं है कि मैं क्या चाहता हूँ।
क्या मैं कुछ गलत कर रहा हूं? मैं इसके आसपास काम करने के लिए क्या कर सकता हूं?
मैं दृश्य स्टूडियो 2012
उस स्थिति में, मैं 4 के साथ जाने पर विचार कर रहा हूं। 'Shared_ptr' का उपयोग करें। – svick
फ़ंक्शन कॉल के लिए एक अद्वितीय_ptr के बजाय केवल संदर्भ का उपयोग करने के बारे में कैसे? – ltjax
@ एसविक, फ़ंक्शन में स्मार्ट पॉइंटर में क्यों गुजरता है यदि यह सूचक का स्वामित्व नहीं लेता है? स्मार्ट पॉइंटर्स के लिए यह नहीं है। –