c++ - 如何默认初始化向量元素?
问题描述
假设我有一个X
没有任何类型的构造函数的类,除非隐式默认构造函数:
class X
{
public:
int value;
X(void) = default;
X(int) = delete;
X(const X&) = delete;
X(X&&) = delete;
};
当我从中创建一个向量std::vector<X>
,并尝试向它添加一个元素push_back(X())
时emplace_back()
,程序将无法编译,因为它尝试使用移动构造函数(根据我对错误描述的理解)。
C2280 'X::X(X &&)':试图引用已删除的函数
如何制作push_back
或emplace_back
使用默认构造函数?
解决方案
推荐阅读
- c# - 是否可以限制嵌入式控件 UserControl 的公开属性
- python - 如果满足某些条件,是否可以将值添加到列表中?
- c# - 如何检查数组字符串的最后一个字符是否以“A”结尾
- angular - 为什么我的剑道图表会渲染模拟数据而不是真实数据?
- apache-kafka - 在 Apache Flink 的连续流式作业中,如何抑制我不关心的字段更改的记录?
- firebase - 当我尝试在 ios 中使用时,在 React Native 中安装 Firebase 错误
- python - 逐一检查列表中的每个值是否与另一个列表相同。(Python 3)
- websocket - Sloved - 在 Cloudflare 上构建 websocket 服务器
- r - 将日期时间列(包含一个字符)拆分为 R 中的两个单独的列
- visual-studio - 在 vsix 扩展中使用 EnvDTE 在多项目模板解决方案中添加对共享项目的引用