C ++: инициализировать статический член большого массива - PullRequest
8 голосов
/ 26 августа 2011

Чтобы использовать статические члены данных в C ++, у меня есть что-то вроде этого:

// HEADER FILE .h
class MyClass {
private :
    static double myvariable;
};

// CPP FILE .cpp
double MyClass::myvariable = 0;

Но если теперь у меня есть:

// HEADER FILE .h
class MyClass {
private :
    static double myarray[1000];
};

Как мне его инициализировать?

Спасибо

Ответы [ 4 ]

12 голосов
/ 26 августа 2011

Так же, как вы инициализируете обычные массивы:

double MyClass::myarray[1000] = { 1.1, 2.2, 3.3 };

Отсутствующие элементы будут установлены на ноль.

3 голосов
/ 26 августа 2011

Попробуйте,

class MyClass {
private :
    static double myarray[1000];
};

double MyClass::myarray[]={11,22};
1 голос
/ 26 августа 2011

Почему бы не сделать это - изменить массив на вектор.Используйте другой класс, который является суперклассом вектора, и выполните инициализацию массива (вектора) в его конструкторе.Затем вы можете сделать его настолько сложным, насколько вам нужно, а также просто обработать его как массив>

1 голос
/ 26 августа 2011

Вы можете добавить статический член не-pod, который инициализирует myvariable из его конструктора

Это немного похоже на 'RIAA-by-proxy', если хотите.

Осторожностатической инициализации Fiasco

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...