После консультации с моим хрустальным шаром я пойду на дикую догадку, чтобы объяснить ошибки:
1. error C2466: cannot allocate an array of constant size 0
2. error C2143: syntax error : missing ';' before '.'
3. error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
4. error C2371: 'races' : redefinition; different basic types
\control console.cpp(13) : see declaration of 'races'
И предположение таково:
races[0].name = "anything";
вуровень пространства имен, вне какой-либо функции.Язык не позволяет вам добавлять код на уровне пространства имен, и компилятор запутывается.Он пытается сопоставить это с шаблонами для valid и считает, что races[0]
является объявлением массива 0
элементов (ошибка 1) неявного типа int
(C допускает, что спецификатор типа будет пропущен в объявлении, и по умолчанию будет int
там - ошибка 3).Если это объявление, за ним должно следовать либо ;
, либо ,
, но компилятор читает .
, поэтому считает, что оно должно принадлежать следующему выражению, и что до него должно быть ;
это (ошибка 2).Наконец, все объявление переопределяет переменную races
как массив 0 int
, в то время как первое определение делает ее массивом 16 RACE
(ошибка 4).