如何移动unique_ptr?

时间:2015-09-01 04:42:40

标签: c++ c++11 smart-pointers move-semantics unique-ptr

我有这段代码:

unique_ptr<int[]> p1; //this is now 2 lines
unique_ptr<int[]> fitness_data (new int[9]);

...add data to fitness_data...

p1 = std::move(fitness_data); //Attempt 1 or...
p1(std::move(fitness_data)); //Attempt 2. Either attempt is commented. 
p1.unique_ptr((std::move(fitness_data))); //Attempt 3

尝试1使用退出代码139停止程序。我的IDE,CLion给出错误

  

'unique_ptr :: operator =(const unique_ptr&amp;)'已删除

尝试2无法编译并显示错误:

  

错误:无法匹配调用'(std :: unique_ptr)(std :: remove_reference&amp;&gt; :: type)'            P1(标准::移动(fitness_data));

尝试3无法编译并出现错误:

  

错误:无效使用'std :: unique_ptr :: unique_ptr'            p1.unique_ptr((标准::移动(fitness_data)));

我假设错误是指复制指针的尝试,但我需要移动它。

对于我的例子,p1在与fitness_data相同的范围内声明。但是,我希望它成为单独数据结构的一部分,例如“structure-&gt; p1”

我将不胜感激任何帮助。我不想再回到手动释放内存了。不幸的是,我们允许使用的OpenMP版本与向量不相符。

谢谢,丹尼尔

0 个答案:

没有答案