mar*_*zzz 4 c++ static const init
为什么我可以写这个:
class VoiceManager
{
public:
static const int mMaxNumOfVoices = 16;
Voice mVoices[mMaxNumOfVoices];
private:
};
Run Code Online (Sandbox Code Playgroud)
但我不能用这个:
class VoiceManager
{
public:
const int mMaxNumOfVoices = 16;
Voice mVoices[mMaxNumOfVoices];
private:
};
Run Code Online (Sandbox Code Playgroud)
它说:" 非静态成员引用必须与特定对象相关 "
但在这两种情况下,mMaxNumOfVoices是一个const并且将在init之前mVoices初始化(编译器遵循声明顺序,没有?).
但它需要static.为什么?
Lig*_*ica 16
必须在编译时知道数组边界.尽管您的初始化是在代码中编写的,但它可以在运行时由构造函数覆盖.因此,您的非static成员变量不是编译时常量.