ошибка синтаксиса массива

#c

#c

Вопрос:

что не так с этим синтаксисом? извините за вопрос новичка.

Источник:

 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#

Комментарии:

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

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

Ответ №1:

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

 // 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 .)