我有一个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类没有移动构造函数。定义一个。

显示的代码应能正常运行。

07-26 09:34