对于C++23标准,如果我们想要某个类的成员变量能被此类的所有对象访问,且该变量不可修改,那么我们一般会选择将该变量声明为静态常量。例如此代码:
class Decrypter{
static const int mask = 0x8a;
public:
void decrypt(){
...
}
};
其中,我们把Decrypter::mask声明为了一个静态常量。对于Decrypter类的所有对象而言,都能访问到同一个mask,节约了内存空间。
然而,如果我们把mask改为一个mask数组,如下列代码所示:
class Decrypter{
static const int mask[] = {0x8a, 0x2b, 0x3c};
public:
void decrypt(){
...
}
};
此时编译器就会报错:
error: in-class initialization of static data member 'const int Decrypter::mask []' of incomplete type
翻译过来就是:“错误:不完整类型的静态成员'const int Decrypter::mask