无法push_back移动(不可复制与康斯特字段)到矢量



我有一个NonCopyable类(由于其unique_ptr字段)。我想创建一个不可复制元素的向量,但以下代码无法编译

    NonCopyable nc;
    vector<NonCopyable> vec;
    vec.push_back(move(nc));

以下是不可复制的定义:

class NonCopyable final {
public:
    const std::unique_ptr<string> data;
};

错误消息是Call to implicitly-deleted copy constructor of NonCopyable

如何将不可复制元素添加到我的向量中,同时能够发出嵌入数据字段不可变的信号?


更新:我目前的解决方案是:(i) 使data非常量;(ii) 将其设为私有;(iii) 添加一个 const 函数以公开data .

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

显示的代码应正常运行。

最新更新