আমি কীভাবে 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
একটি ফাংশনে প্রবেশ করতে পারি না ? নিশ্চয় এটি নির্মাণের প্রাথমিক উদ্দেশ্য? অথবা সি ++ কমিটি আমার কাছে কাঁচা সি-স্টাইল পয়েন্টারগুলিতে ফিরে এসে এটি এভাবে পাস করার ইচ্ছা করেছিল:
MyFunc(&(*ptr));
এবং সবচেয়ে আশ্চর্যের বিষয়, এটি কেন পাস করার এটি একটি সঠিক উপায়? এটি মারাত্মকভাবে বেমানান বলে মনে হচ্ছে:
MyFunc(unique_ptr<A>(new A(1234)));