重新分配int的unique_ptr

时间:2016-05-10 08:19:37

标签: c++ c++11

这是一个简单的例子,我通常不会在堆上存储 auto l = std::make_unique<int>; *l=8; std::cout << *l << std::endl; ,但我试图了解其工作原理。

我试图理解为什么这不起作用:

*l=8;

我明白了:

  

std :: __ 1 :: default_delete&gt; ()&#39;不可分配

编译器在行unique_ptr

上显示此错误

我知道 int*h=new int; *h=7; std::cout << *h << std::endl; 本身并不是可以重新分配的,但这不是我正在做的事情。我只是简单地改变指针指向的值。使用常规指针我会这样做:

unique_ptr

我尝试使用adb -s < serialNumber > shell 来模仿此行为。

1 个答案:

答案 0 :(得分:11)

std::make_unique<int>是一个函数,您必须将其命名为:

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