是否可以初始化静态const空数组,请参见下面的代码,

//CFoo.h
class CFoo
{
 public:
   CFoo();
   ~CFoo();

 public:
    static const int arr[];

};

//CFoo.cpp
const int arr[] = {0,1,2};

CFoo::CFoo(){}
CFoo::~CFoo(){}


编辑:

似乎代码是有效的,并且对于后续问题,为什么我不能对静态const数组进行大小调整,例如,

sizeof( CFoo::arr );


有什么办法可以使CFoo :: arr变大吗?

谢谢。

最佳答案

是;您需要限定数组的名称:

const int CFoo::arr[] = {0,1,2};


CFoo::arr的类型在定义之前是不完整的,因此您在使用它的方式上受到限制。例如,您不能将其用作sizeof的参数。如果您完成了声明,那么就没有问题了:

struct CFoo {
    static const int arr[3];
};


但是请注意,这存在可维护性问题,因为在两个不同的位置指定了大小,并且如果初始化程序值少于数组的声明大小,则可能不会出现错误。

关于c++ - 初始化静态const空数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4094340/

10-12 17:18