Инициализация постоянного статического массива в заголовочном файле

Условие, используемое в цикле while, все между while и do. В этом случае условие включает в себя строку 3 (echo), которая каждый раз возвращает 0. Результат сравнения игнорируется, и используется состояние выхода из echo, как описано в help while:

, а: while COMMANDS; do COMMANDS; done

Выполнять команды как долго как испытание успешно.

Расширяйте и выполняйте КОМАНДЫ, пока конечная команда в while КОМАНДАХ имеет статус выхода ноль.

38
задан Donald Duck 27 November 2017 в 22:25
поделиться

3 ответа

Это - вид злоупотребления системой, но если Вы ДЕЙСТВИТЕЛЬНО хотите определить его в заголовочном файле (и у Вас нет C++ 17), можно сделать это. Это не будет статический участник, но это будет константа, которая только поднимает устройство хранения данных на единицу компиляции (а не на экземпляр класса):

(Помещенный весь этот код в заголовочном файле.)

namespace {
    const char test_init_array[] = {'1', '2', '3'};
}

class test {
public:
    const char * const array;

    test() : array(test_init_array) {}
};
0
ответ дан 27 November 2019 в 03:10
поделиться
//Header File 
class test 
{ 
    const static char array[];
}; 

// .cpp
const char test::array[] = { '1', '2', '3' }; 
20
ответ дан 27 November 2019 в 03:10
поделиться

Лучшее место будет в исходном файле

// Header file
class test
{
    const static char array[];
};

// Source file
const char test::array[] = {'1','2','3'};

, вы можете инициализировать целочисленные типы в декларации класса, как вы пытались сделать; Все остальные типы должны быть инициализированы за пределами декларации класса, и только один раз.

48
ответ дан 27 November 2019 в 03:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: