在 C++11 中初始化一个 C++ std::array 结构体

sti*_*vlo 3 c++ arrays struct c++11

我已经阅读了类似的问题,但是如果我有一个结构,有没有人知道为什么

struct ArabicRoman {
    char roman;
    int arabic;
};
Run Code Online (Sandbox Code Playgroud)

我可以std::array通过以下方式初始化 C++ :

ArabicRoman M({'M', 1000});
ArabicRoman D({'D', 500});
array<ArabicRoman, 2> const SYMBOLS({ M, D });
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式初始化 C 风格的数组:

ArabicRoman const SYMBOLS[]({ {'M', 1000}, {'D', 500} });
Run Code Online (Sandbox Code Playgroud)

但是,以下未编译:

array<ArabicRoman, 2> const SYMBOLS({ {'M', 1000}, {'D', 500} });
Run Code Online (Sandbox Code Playgroud)

初始化 C++ 风格的结构数组的任何解决方法?

101*_*010 7

您需要用大括号替换括号:

std::array<ArabicRoman, 2> const SYMBOLS {{ {'M', 1000}, {'D', 500} }};
                                         ^                           ^
Run Code Online (Sandbox Code Playgroud)

现场演示