[英]How to initialize the array member with constant member value?
我想使用一个常量值来初始化成员数组。
--Test.h--
class Test {
public:
static int ARRAY_SIZE;
...
..
private
int m_array[ARRAY_SIZE];
}
--Test.cpp--
int Test::ARRAY_SIZE = 20;
但是,它显示出这样的错误。 '数组边界不是']之前的整数常量”
因此,我想知道对此有解决方案。
我想要固定大小的数组。 而且我不希望有任何依赖关系(例如用于常量值的其他文件)
最佳做法是什么?
错误是正确的。 您的数组绑定是变量,而不是常量。
static int ARRAY_SIZE;
上面声明了一个变量。 下面声明了一个常量。
static const int ARRAY_SIZE;
对于数组的大小,除了简单地声明为const
之外,还有其他要求:必须使用常量表达式(也称为编译时常量(编译器已知的常量值))初始化大小。 如果转换单元看到了ARRAY_SIZE
的声明,但是没有看到其值,则它不算作编译时常量。 为了解决这个问题,初始化必须在头文件中。 结合初始化和声明:
static const int ARRAY_SIZE = 20;
从C ++ 11开始,有一种花哨的方式来表示您有一个编译时常量,您可能想养成在应用时使用它的习惯:
static constexpr int ARRAY_SIZE = 20;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.