Инициализация постоянного статического массива в файле заголовка
Я только что узнал, что следующее недопустимо.
//Header File
class test
{
const static char array[] = { '1', '2', '3' };
};
Где лучше всего инициализировать это?
Ответ 1
Лучшее место в исходном файле
// Header file
class test
{
const static char array[];
};
// Source file
const char test::array[] = {'1','2','3'};
Вы можете инициализировать целые типы в объявлении класса, как вы пытались сделать; все остальные типы должны быть инициализированы вне объявления класса и только один раз.
Ответ 2
Вы всегда можете сделать следующее:
class test {
static const char array(int index) {
static const char a[] = {'1','2','3'};
return a[index];
}
};
Пара приятных вещей об этой парадигме:
Нет необходимости в файле cpp
Вы можете выполнить проверку диапазона, если вы хотите