我有这段代码:
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版本与向量不相符。
谢谢,丹尼尔