为啥我不能将 new 创建的 &client 对象分配给 unique_ptr

Posted

技术标签:

【中文标题】为啥我不能将 new 创建的 &client 对象分配给 unique_ptr【英文标题】:Why I can't assign , &client object created by new to unique_ptr为什么我不能将 new 创建的 &client 对象分配给 unique_ptr 【发布时间】:2017-03-25 14:43:23 【问题描述】:

我知道还有其他方法可以做到这一点。但我决定尝试一下:

    unique_ptr<int> pi;
    pi = std::move(new int);

当我编译这段代码时,编译器给出了一个错误。为什么?

【问题讨论】:

那么,错误是什么?你为什么要std::move指针? 【参考方案1】:

因为unique_ptroperator= 没有“分配原始指针”功能。 这可能是为了避免人们犯错。

(顺便说一句,你的std::move 什么都不做。)

你可以使用构造函数:

std::unique_ptr<int> pi(new int);

std::make_unique:

auto pi = std::make_unique<int>();

或者,稍后分配,reset()

std::unique_ptr<int> pi;
pi.reset(new int);

【讨论】:

以上是关于为啥我不能将 new 创建的 &client 对象分配给 unique_ptr的主要内容,如果未能解决你的问题,请参考以下文章

java中,InetAddress为啥不能new对象

为啥我不能将 const 左值引用绑定到返回 T&& 的函数?

为啥基类方法不尊重 new 关键字?

为啥节点不能链接在一起?

为啥我不能在 C++ 中用 new 调用参数化构造函数?

为啥我不能在 JavaScript/ES6 中使用带有箭头函数的`new`? [复制]