2015-06-08 3 views
1

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

Вот пример заголовка:

class Foo{ 
public: 
    static void f1(); 
private: 
    static int* list; 
} 

и файл .cpp, глобально (за пределами других вызовов функций):

int* Foo::list = new int[10]; 

мне нужно инициализировать список [0] = 2 так или иначе, но это запрещено в том же месте, где у меня есть инициализатор списка.

+0

_ «У меня есть класс, который полностью статичен». _ Почему? –

+0

_ «Мне нужно как-то инициализировать список [0] = 2, но это недопустимо в том же месте, где у меня есть инициализатор списка». _ Итак? –

+0

@LightnessRacesinOrbit - Может быть базовый класс с множеством констант. Например, цвета формы. –

ответ

1

Если ваш компилятор поддерживает C++ 2011 затем написать

int* Foo::list = new int[10] { 2 }; 

Другим способом является, например, для определения собственной статической функции. Например

class Foo 
{ 
// ... 
private: 
    static int *list; 
    static int * init() 
    { 
     int *p = new int[10]; 
     p[0] = 2; 
     return p; 
    }  
}; 

int* Foo::list = Foo::init(); 
Смежные вопросы