静态常量整型数组
Static constant integer arrays
当在类中声明静态常量数组时
static const int myArray[] = {1, 2, 3, 999};
我得到一个错误,如"类内初始化const int类型的静态数据成员[]需要constexpr说明符"。当我这样做并声明它为
static constexpr int myArray[] = {1, 2, 3, 999};
它的工作原理。为什么不能声明静态常量数组?我错过了什么?
问题中似乎有一些关于声明和定义/初始化的混淆。
在c++ 11之前,静态成员的定义(通常包括初始化)应该在类外完成,但整型或枚举类型的静态常量除外。来自Stroustrup的c++ FAQ:
要使用类内初始化语法,常量必须是由常量表达式
初始化的整型或枚举类型的静态const。
即使在这种情况下,如果需要定义(例如获取静态成员的地址),也应该在类外定义。
c++ 11引入了constexpr
指示符来表示编译时的初始化,并且如果声明了constexpr
,则允许在类中初始化静态成员(检查static
参考中的Constant static members部分)。它还允许类内初始化非静态成员,但具有更广泛的含义。
相关文章:
- 无法在 Arduino 中uint8_t数组转换为无符号长整型数组
- 将 BYTE 数组转换为无符号长整型
- 错误:数组大小表达式必须具有整型或无作用域枚举类型,而不是'double'
- 如何将SHA1转换为无符号长整型数组[5]
- 我需要以相反的方式复制一个长整型数组,我需要系统函数,例如 memcpy 有没有
- 如何将字节数组转换为整数类型(整数、长整型、短型等)"安眠安"?
- 复制存储在空指针的整型数组到整型数组
- 如何使用SSE来处理整型数组,使用条件
- 整型转换为字符数组
- 序列化/反序列化整型数组为char数组
- c++将整型数组赋值给大小相同的空整型数组
- c++中,数组的下标需要为整型
- 按值传递时改变整型数组的大小
- 如何将ASCII码数组转换为整型
- 定义长整型长数组
- c++排序(升序,降序)整型数组
- 将字符串转换为整型数组
- 将二进制文件读入整型数组
- 将无符号字符数组转换为整型
- 将数组整型值转换为双精度值