在C++11中初始化结构的C++std::数组

initialise a C++ std::array of struct in C++11

本文关键字:C++std 数组 结构 C++11 初始化      更新时间:2023-10-16

我读过类似的问题,但如果我有一个结构,有人知道为什么吗

struct ArabicRoman {
    char roman;
    int arabic;
};

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

ArabicRoman M({'M', 1000});
ArabicRoman D({'D', 500});
array<ArabicRoman, 2> const SYMBOLS({ M, D });

我可以用以下方式初始化C样式数组:

ArabicRoman const SYMBOLS[]({ {'M', 1000}, {'D', 500} });

但是,以下内容未编译:

array<ArabicRoman, 2> const SYMBOLS({ {'M', 1000}, {'D', 500} });

初始化C++风格的结构数组有什么解决办法吗?

您需要将括号替换为大括号:

std::array<ArabicRoman, 2> const SYMBOLS {{ {'M', 1000}, {'D', 500} }};
                                         ^                           ^

现场演示