如何将int变量的地址分配给unique_ptr

时间:2015-02-05 10:38:42

标签: c++11

这是代码。

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;

}

正确的方法是什么?

2 个答案:

答案 0 :(得分:3)

只应将动态分配的对象分配给unique_ptr,因为unique_ptr可能会尝试delete该对象。

至于实际问题,reset()的{​​{1}}函数用于重新指定指针。

答案 1 :(得分:1)

使用unique_ptr::reset

p.reset(&val);

当然,在这种特殊情况下,当p超出范围并且尝试delete int时,这将导致未定义的行为,但这是另一回事。