我有一个NonCopyable
类(由于其unique_ptr
字段)。我想创建一个NonCopyable元素的向量,但是以下代码无法编译
NonCopyable nc;
vector<NonCopyable> vec;
vec.push_back(move(nc));
这是NonCopyable的定义:
class NonCopyable final {
public:
const std::unique_ptr<string> data;
};
错误消息是
Call to implicitly-deleted copy constructor of NonCopyable
。如何在向向量添加NonCopyable元素的同时能够发出信号,表明嵌入的数据字段是不可变的?
更新:我当前的解决方案是:(i)使
data
为非常量; (ii)设为私人; (iii)添加const函数以公开data
。 最佳答案
您的NonCopyable
类没有移动构造函数。定义一个。
显示的代码应能正常运行。