无法将push_back移动(NonCopyableWithConstField)为向量

时间:2015-03-16 01:34:07

标签: c++ c++11 move

我有一个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

1 个答案:

答案 0 :(得分:2)

您的NonCopyable类没有移动构造函数。定义一个。

显示的代码应该可以正常运行。