c ++ 11 — ISO C ++ запрещает инициализацию членов в структуре

Я пишу эмулятор и решил управлять эмуляцией ввода / вывода в структуре:

struct callbacks
{
short LastFrequency = 9000;
int *MMIO_RANGE1;
short Cycle_LN = 65535 / LastFrequency;
const char *STATUS_FLAGS[] =
{
"ACK",
"NO_VIB",
"DATA",
"BYTEPACK",
"WORDPACK"};
}

Этот код выше выглядит хорошо для меня и, кажется, подчиняется всем правилам … но я получаю сообщение об ошибке, как указано в заголовке выше. Я искал вокруг, и люди говорят, что ошибка означает разные вещи … но что это?

Проблема направлена ​​на «LastFrequency».

-4

Решение

Две вещи: добавить 5 и ;

Также: обязательно скомпилируйте с -std=c++11 (или же -std=c++0x для более старых версий g ++ или эквивалентных опций для выбранного вами компилятора), потому что инициализаторы в классе — особенность C ++ 11.

БОЛЬШОЕ ПРЕДУПРЕЖДЕНИЕ: этот код НЕ поддерживается gcc 4.6 и требует gcc> = 4.7.3

struct callbacks
{
short LastFrequency = 9000;
int *MMIO_RANGE1;
short Cycle_LN = 65535 / LastFrequency;
const char *STATUS_FLAGS[5] = // <-- 5 here
{
"ACK",
"NO_VIB",
"DATA",
"BYTEPACK",
"WORDPACK"};
}; // <-- ; here

int main()
{

}

Живой пример.

5

Другие решения


По вопросам рекламы [email protected]