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