c++ - 初始化列表中的initializer_list

标签 c++ c++11 initializer-list initialization-list

我想使用 std::initializer_list 初始化基类。

struct A : public std::array<int, 4>
{
  // This constructor works fine
  A()
  : std::array<int, 4>{{ 1, 2, 3, 4 }}
  {
  }

  // THIS CONSTRUCTOR FAILS TO COMPILE
  A(std::initializer_list<int> il)
  : std::array<int, 4>{il}
  {
  }
};

第二个构造函数的 GCC 错误是

error: array must be initialized with a brace-enclosed initializer

我想要的是像这样用initializer_list初始化新的A实例

A var{{ 1, 2, 3, 4 }}

并将其传递给基类。

最佳答案

std::array 没有采用 std::initializer_list 的构造函数。

你唯一的方法就是这样做:

#include <array>
#include <initializer_list>

struct A : public std::array<int, 4>
{
    A()
    : std::array<int, 4>{{ 1, 2, 3, 4 }}
    {
    }

    A(std::array<int, 4> il)
    : std::array<int, 4>(il)
    {
    }
};

int main ()
{
    A a ({{ 1, 2, 3, 4 }});
}

关于c++ - 初始化列表中的initializer_list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23038080/

相关文章:

C++:包含父类时出现多重定义错误?

c++ - 模板类错误 C++

c++ - 编写/设计一个简单的对象管理器(游戏上下文)

c++11 - bad_alloc 与 unordered_mapinitializer_list 和 MMX 指令,可能的堆损坏?

C++ - 通过初始化列表构造 unique_ptr 的 vector

go - 什么是 C++ 初始化列表的 Go 等价物?

c++ - Eclipse CDT 提示 Unresolved 功能,但仍然成功构建

c++ - 带有 rtkaio 的 linux 上的 aio_write 有时很长

c++ - 一个类作为另一个类的友元的成员函数

c++11 - 使用 thread_local 时 gcc 4.8.1 中的内存泄漏?