为啥我不能将 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_ptr
的operator=
没有“分配原始指针”功能。
这可能是为了避免人们犯错。
(顺便说一句,你的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的主要内容,如果未能解决你的问题,请参考以下文章