如何将 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)));
原文由 user3690202 发布,翻译遵循 CC BY-SA 4.0 许可协议
这里基本上有两种选择:
通过引用传递智能指针
将智能指针移动到函数参数中
请注意,在这种情况下,断言将成立!