如何在初始值设定项列表中初始化普通数组成员变量
How can I initialize normal array member variable in initializer list?
我想做以下几件事:
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。
相关文章:
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 在函数内部的声明中初始化数组,并在外部使用它
- 为什么用结构初始化数组需要指定结构名称
- 有没有一种代码密度较低的方法来使用非默认构造函数初始化数组?
- C++使用另一个数组和新值初始化数组
- 初始化数组、"memset"或" {//value} "的最佳方法是什么?
- 在 constexpr 构造函数中初始化数组是否合法?
- 我可以初始化 const 实例,以便我可以将其用作 const 来初始化数组吗?
- 在构造函数中初始化数组
- 是否可以使用函数返回的值初始化数组
- 使用宏使用额外元素初始化数组
- 在循环中显示不同值的初始化数组
- 如何在macOS中的旧扩展clang和gcc编译器中初始化数组和向量
- 使用可变模板列表初始化数组,并放置new
- 使用函数从 Visual Studio 2017 中的 main 创建和初始化数组
- 使用 c++ 中的函数初始化数组
- 这是使用构造函数初始化数组对象的最佳方法吗?
- C++ 使用变量而不是常量表达式初始化数组
- 在初始化列表中初始化数组的更好方法
- 在可变参数模板类中初始化数组