【发布时间】:2014-02-16 22:59:41
【问题描述】:
我正在尝试创建一个标准列表,该列表将包含一个包含唯一指针的类列表。我不断收到一条错误消息,提示您尝试引用已删除的函数。
我知道问题是唯一指针没有赋值运算符,并且 list 试图调用它,但我无法找到解决方法。
下面是保存指针的类的代码:
class ptr_hold
{
public:
ptr_hold(std::list<int>& _lst);
std::list<int>* get_list();
private:
std::unique_ptr<std::list<int>> num_list;
};
ptr_hold::ptr_hold(std::list<int>& _lst)
{
num_list = std::unique_ptr<std::list<int>>(new std::list<int>(_lst));
}
这是尝试执行分配的示例代码:
list<int> lst;
for (int i = 0; i < 5; i++)
{
lst.push_back(i);
}
ptr_hold ph = ptr_hold(lst);
list<ptr_hold> ph_list;
ph_list.push_back(ph); //error
ph_list.push_back(move(ph)); //error
我该如何处理?
【问题讨论】:
-
ph_list.emplace_back(lst); -
实际上,
ph_list.push_back(move(ph));适合我。但是emplace_back更好。
标签: c++ list c++11 unique-ptr