ฉันจะส่งผ่าน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 ++ ตั้งใจให้ฉันถอยกลับไปใช้พอยน์เตอร์สไตล์ C แบบดิบแล้วส่งต่อแบบนี้:
MyFunc(&(*ptr));
และที่แปลกที่สุดทำไมนี่ถึงเป็นวิธีที่ใช้ได้? ดูเหมือนไม่สอดคล้องกันอย่างน่ากลัว:
MyFunc(unique_ptr<A>(new A(1234)));