最佳答案
如何将 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)));