为什么我可以写这个:
class VoiceManager
{
public:
static const int mMaxNumOfVoices = 16;
Voice mVoices[mMaxNumOfVoices];
private:
};
但我不能用这个:
class VoiceManager
{
public:
const int mMaxNumOfVoices = 16;
Voice mVoices[mMaxNumOfVoices];
private:
};
它说:“非静态成员引用必须相对于特定对象”
但在这两种情况下,
mMaxNumOfVoices
都是 const
并且会在 mVoices
init 之前被初始化(编译器遵循声明顺序,不是吗?)。但它需要
static
。为什么? 最佳答案
必须在编译时知道数组边界。尽管您的初始化写在代码中,但它可以在运行时被构造函数覆盖。因此,您的非 static
成员变量不是编译时常量。
关于c++ - 为什么我在这里需要静态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41956862/