这是代码。
int main()
{
unique_ptr <int> p {nullptr};
int val = 100;
p = &val; // Not working - compilation error
p = move(&val); // Not working - compilation error
cout << *p;
return 0;
}
正确的方法是什么?
答案 0 :(得分:3)
只应将动态分配的对象分配给unique_ptr
,因为unique_ptr
可能会尝试delete
该对象。
至于实际问题,reset()
的{{1}}函数用于重新指定指针。
答案 1 :(得分:1)
使用unique_ptr::reset
:
p.reset(&val);
当然,在这种特殊情况下,当p
超出范围并且尝试delete
int时,这将导致未定义的行为,但这是另一回事。