Почему я могу написать это:Зачем мне здесь статичный?
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
. Зачем?
Контекст и сообщение об ошибке, пожалуйста. – LogicStuff
Возможно, потому, что он не знал бы до времени выполнения, что такое 'mMaxNumOfVoices'? И использование 'static' заставляет это значение быть известным. –
Я думаю, что только 'const' не делает его постоянной времени компиляции, тогда как' static const' does – torkleyy