无法push_back移动(不可复制与康斯特字段)到矢量
Can't push_back move(NonCopyableWithConstField) to vector
我有一个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
类没有移动构造函数。定义一个。
显示的代码应正常运行。
相关文章:
- 康斯特指针C++斯特劳斯特鲁普
- Static_cast 对于康斯特来说,会抛弃预选赛
- 东康斯泰克普/康斯蒂尼特/康斯特瓦尔在C++20 中允许吗?
- 康斯特正确性建议
- 从字符到康斯特* 字符的转换无效,代码有什么问题?
- T*上的部分排序...和康斯特·
- 调用"树:<int>:运算符==(树*&<int><int>,树*&)康斯特"没有匹配函数
- 抛弃康斯特,就是这种定义明确的行为
- 错误:类型为 '.&' 来自类型的临时 '..*康斯特'
- 无法push_back移动(不可复制与康斯特字段)到矢量
- 传递康斯特字符*的值
- mpg123_open()和康斯特
- 康斯特指针浅拷贝
- C++ wifstream:不兼容的字符常量*,wchar_t康斯特*类型
- 康斯特是谎言吗?(因为康斯特可以被抛弃)
- 康斯特·查尔 * 变得腐败
- 康斯特查尔..改变
- 康斯特与 #define(奇怪的行为)
- 这是抛弃康斯特吗?
- 第二个康斯特在"const int const &someval"做什么?