繁体   English   中英

如何使用常量成员值初始化数组成员?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM