如何在初始值设定项列表中初始化普通数组成员变量

How can I initialize normal array member variable in initializer list?

本文关键字:初始化 数组 变量 组成员 列表      更新时间:2023-10-16

我想做以下几件事:

class MyClass {
    public:
        MyClass() : arr({1,2,3,4,5,6,7,8}) {}
    private:
        uint32_t arr[8];
};

但它不起作用(编译器:在"}"标记之前预期的主要表达式。 我看过其他 SO 问题,人们正在传递诸如 std::initializer_list 之类的东西,并尝试有趣的事情,例如将数组初始值设定项放在双括号中,如下所示:

MyClass() : arr( {{1,2,3,4,5,6,7,8}} ) {}

但我不熟悉std::initializer_list的目的,而且我也不太确定为什么上面的代码中有双括号(尽管它无论如何都不起作用,所以我不确定为什么它很重要(。

是否有一种正常方法可以在构造函数初始值设定项列表中实现arr变量的初始化?

你的语法是正确的。或者,你可以说 arr{1,2,3,...} .

最有可能的是,您的编译器尚不支持此构造。GCC 4.4.3 和 4.6.1 都这样做(带 -std=c++0x (。

在 GCC 4.5.2 上完美运行,具有 -std=gnu++0x。我收到警告和冻结 -std=c++98。