首页 > 解决方案 > 如何默认初始化向量元素?

问题描述

假设我有一个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_backemplace_back使用默认构造函数?

标签: c++constructorinitializationstdvectorpush-back

解决方案


推荐阅读