मैं std::unique_ptr
फंक्शन में कैसे पास हो सकता हूं ? चलो कहते हैं कि मेरे पास निम्न वर्ग है:
class A
{
public:
A(int val)
{
_val = val;
}
int GetVal() { return _val; }
private:
int _val;
};
निम्नलिखित संकलन नहीं है:
void MyFunc(unique_ptr<A> arg)
{
cout << arg->GetVal() << endl;
}
int main(int argc, char* argv[])
{
unique_ptr<A> ptr = unique_ptr<A>(new A(1234));
MyFunc(ptr);
return 0;
}
मैं std::unique_ptr
किसी फ़ंक्शन में पास क्यों नहीं कर सकता ? निश्चित रूप से यह निर्माण का प्राथमिक उद्देश्य है? या C ++ कमेटी ने मुझे कच्चे सी-स्टाइल पॉइंटर्स पर वापस जाने का इरादा किया और इसे इस तरह से पास किया:
MyFunc(&(*ptr));
और सबसे अजीब, यह क्यों इसे पारित करने का एक ठीक तरीका है? यह बहुत ही असंगत लगता है:
MyFunc(unique_ptr<A>(new A(1234)));