这种unique_ptr初始化有什么问题?

热尔多斯

有人可以告诉我,下面的unique_ptr初始化有什么问题吗?

int main()
{
  unique_ptr<int> py(nullptr);
  py = new int;
  ....
}

g ++ -O2 xxx.cc -lm -o xxx -std = c ++ 11说:

error: no match for ‘operator=’ (operand types are    ‘std::unique_ptr<int>’ and ‘int*’)
   py = new int;
      ^

在做

unique_ptr<int> px(new int);

效果很好。

KillianDS

初始化在这两段代码中都很好,unique_ptr具有用于裸指针的构造函数nullptr

第一个代码段中失败的是赋值,这是因为unique_ptr没有operator=重载,重载接受裸指针作为其右手侧。它确实接受另一个unique_ptr,所以您可以这样做:

py = unique_ptr<int>{new int};
py = std::make_unique<int>(); // Since c++14

或者您可以看一下reset它也接受一个裸指针,并具有或多或少相同的含义:

py.reset(new int);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有什么方法可以初始化unique_ptr的向量吗?

如何初始化unique_ptr

我初始化“temps”的方式有什么问题?

将std :: unique_ptr重置为数组指针有什么问题?

使用本地原始指针初始化std :: unique_ptr时会发生什么?

无法在类中初始化unique_ptr的向量

使用iota初始化unique_ptr的容器

C ++ 11中的unique_ptr的延迟初始化

unique_ptr <>()初始化会失败吗?

使用初始化列表的vector <unique_ptr <A>>

C++ unique_ptr 初始化

成员初始化列表中的unique_ptr

延迟初始化std :: unique_ptr

C++:unique_ptr 未正确初始化

无法使用std :: unique_ptr初始化指针

在類內部初始化 unique_ptr

如何初始化std :: unique_ptr <std :: unique_ptr <T> []>?

使用初始化列表初始化unique_ptr的容器,继续

初始化std :: unique_ptr作为原始数组指针的初始化

初始化有什么问题?尝试使用初始化函数初始化图形时,为什么无法成功

std :: array的此内联初始化有什么问题?

用匿名内部类初始化的静态字段有什么问题吗?

这个字典初始化器有什么问题

有没有比这更简洁的方法来初始化unique_ptr <char []>?

从unique_ptr <T []>初始化shared_ptr <T>

是否可以在构造函数的初始化程序列表中初始化std :: unique_ptr的std :: array?

您可以从初始化列表中使用unique_ptr初始化STL容器吗?

c++ 中的初始化没有匹配的构造函数错误。我的构造函数有什么问题?

在构造函数中使用C ++中的unique_ptr初始化向量