如何将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)));