如何将a传递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;
}
为什么不能将a传递std::unique_ptr
给函数?当然这是构建的主要目的吗?还是C ++委员会打算让我退回到原始C风格的指针并像这样传递它:
MyFunc(&(*ptr));
最奇怪的是,为什么这是一种好的传递方式?似乎非常不一致:
MyFunc(unique_ptr<A>(new A(1234)));