是否可以初始化一个静态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(){}
Run Code Online (Sandbox Code Playgroud)
编辑:
似乎代码是有效的,对于后续问题,为什么我不能对静态const数组进行大小调整,例如,
sizeof( CFoo::arr );
Run Code Online (Sandbox Code Playgroud)
有什么办法可以缩小CFoo :: arr的大小吗?
谢谢.
是; 你需要限定数组的名称:
const int CFoo::arr[] = {0,1,2};
Run Code Online (Sandbox Code Playgroud)
CFoo::arr在定义之前,类型是不完整的,因此您在如何使用它时受到限制.例如,您不能将其用作参数sizeof.如果您完成声明,那么没有问题:
struct CFoo {
static const int arr[3];
};
Run Code Online (Sandbox Code Playgroud)
但请注意,这具有可维护性问题,因为大小是在两个单独的位置指定的,如果初始化程序值少于声明的数组大小,则可能不会出现错误.