【发布时间】:2017-06-14 16:02:58
【问题描述】:
我有一个类,每个实例都将被解释,创建和销毁受到严格监管。不允许随机移动、复制、临时 - 一旦通过专用函数创建,实例只能通过引用和指针“传递”。
为此,我删除了该类的复制构造函数和赋值运算符。
这些实例本应保存在 std::list 中,由 emplace_back() 创建,按需删除,并且从未打算移动。但我收到有关已删除的复制构造函数的错误。
In constructor 'std::_List_node<_Tp>::_List_node(_Args&& ...)
error: deleted function 'Reader::Reader(const Reader&)
stl_list.h:103: error: used here
有没有办法让这个工作?我不需要手工雕刻的 std::list 的替代品?
【问题讨论】:
-
你是否保留了移动语义?
-
哪个版本的标准?哪一行代码导致错误?
-
添加移动构造函数?
-
您如何将对象添加到
list? -
@MooingDuck:
list.emplace_back(params);
标签: c++ c++11 stdlist deleted-functions