简体   繁体   English

无法push_back移动(NonCopyableWithConstField)到矢量

[英]Can't push_back move(NonCopyableWithConstField) to vector

I have a NonCopyable class (due to its unique_ptr field). 我有一个NonCopyable类(由于其unique_ptr字段)。 I want to create a vector of NonCopyable elements but the following code wouldn't compile 我想创建一个NonCopyable元素的向量,但是以下代码无法编译

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

Here's the definition of NonCopyable: 这是NonCopyable的定义:

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

The error message is Call to implicitly-deleted copy constructor of NonCopyable . 错误消息是Call to implicitly-deleted copy constructor of NonCopyable

How can I add NonCopyable elements to my vector while being able to signal that the embedded data field is immutable? 如何在我的向量中添加NonCopyable元素,同时能够发出信号,表明嵌入的数据字段是不可变的?


Update : my current solution is: (i) make data non-const; 更新 :我当前的解决方案是:(i)使data非常量; (ii) make it private; (ii)设为私人; (iii) add a const function to expose data . (iii)添加const函数以公开data

Your NonCopyable class does not have a move constructor. 您的NonCopyable类没有移动构造函数。 Define one. 定义一个。

The code shown should function correctly. 显示的代码应能正常运行。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM