我有一个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
非const; (ii)将其私有化; (iii)添加一个const函数来公开data
。
答案 0 :(得分:2)
您的NonCopyable
类没有移动构造函数。定义一个。
显示的代码应该可以正常运行。