我想用一个常量值来初始化成员数组。
--测试.h--
class Test {
public:
static int ARRAY_SIZE;
...
..
private
int m_array[ARRAY_SIZE];
}
--测试.cpp--
int Test::ARRAY_SIZE = 20;
但是,它显示这样的错误。 'array bound is not an integer constant before ‘]''
所以,我想知道是否有解决方案。
我想要固定大小的数组。我不想要任何依赖 (如常量值的附加文件)
这方面的最佳做法是什么?
最佳答案
错误是正确的。您的数组绑定(bind)是一个变量,而不是一个常量。
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;
关于c++ - 如何用常量成员值初始化数组成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54586852/