我想使用常量值初始化成员数组。
-Test.h-
class Test {
public:
static int ARRAY_SIZE;
...
..
private
int m_array[ARRAY_SIZE];
}
-Test.cpp-
int Test::ARRAY_SIZE = 20;
但是,它显示了这样的错误。 “数组绑定不是']'前的整数常量
所以,我想知道有解决方案。
我想要固定大小的数组。我不想要任何依赖 (例如其他文件,以获得恒定值)
最佳做法是什么?
答案 0 :(得分:1)
错误是正确的。您的数组绑定是变量,而不是常量。
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;
答案 1 :(得分:-1)
在Cpp中,数组的大小在编译时必须恒定。但是,在您的情况下,ARRAY_SIZE
不是常数。它是可变的。这就是为什么您会收到该错误。因此,您可以将变量声明为const
或宏。
喜欢:
static const int ARRAY_SIZE;
或
#define ARRAY_SIZE <Your_Size>