2011-10-16 2 views
1

Что случилось с этим синтаксисом? извините за вопрос новичка.Ошибка синтаксиса массива

источник:

Level::Level() 
{ 

    NintyDegreeDirections[4] = 
    { 
     (float)(2*(Math.PI)), 
     (float)(3*(Math.PI)/2), 
     (float)Math.PI, 
     (float)Math.PI/2 
    } 

...rest of class 

Заголовок:

//all necessary includes 

class Level 
{ 
private: 

    static const float NintyDegreeDirections[4]; 

...rest of header 

, как у меня есть массив в качестве члена класса? Я конвертирую из C#

+0

Вы бы получить больше и лучшие ответы, если ваш код был (а) полные и компилируемые, то есть никакие фрагменты, такие как «все необходимое», и (б) вы должны указать фактические ошибки, которые вы получили при компиляции. – thiton

+1

'static' сделает его членом класса, а это значит, что вы не инициализируете его для каждого экземпляра, а один раз для всего класса. Вы пытаетесь инициализировать его в конструкторе, предположите, что вам может понадобиться член экземпляра вместо члена класса, но я не уверен. –

ответ

3

Если вы хотите инициализировать свой статический член класса в исходном файле, вам нужно сделать это вне любого тела функции. Вам также необходимо сохранить всю информацию о типе в определении. Например.

// In level.cpp, at namespace (global) scope: 
const float Level::NintyDegreeDirections[4] = 
{ 
    (float)(2*(Math.PI)), 
    (float)(3*(Math.PI)/2), 
    (float)Math.PI, 
    (float)Math.PI/2 
}; 

(Это предполагает, что вы определили Math пространство имен или класс с соответствующим членом PI. Math не является родным для C++.)

Смежные вопросы