Условие, используемое в цикле while, все между while
и do
. В этом случае условие включает в себя строку 3 (echo
), которая каждый раз возвращает 0. Результат сравнения игнорируется, и используется состояние выхода из echo
, как описано в help while
:
, а:
while COMMANDS; do COMMANDS; done
Выполнять команды как долго как испытание успешно.
Расширяйте и выполняйте КОМАНДЫ, пока конечная команда в
BLOCKQUOTE>while
КОМАНДАХ имеет статус выхода ноль.
Это - вид злоупотребления системой, но если Вы ДЕЙСТВИТЕЛЬНО хотите определить его в заголовочном файле (и у Вас нет C++ 17), можно сделать это. Это не будет статический участник, но это будет константа, которая только поднимает устройство хранения данных на единицу компиляции (а не на экземпляр класса):
(Помещенный весь этот код в заголовочном файле.)
namespace {
const char test_init_array[] = {'1', '2', '3'};
}
class test {
public:
const char * const array;
test() : array(test_init_array) {}
};
//Header File
class test
{
const static char array[];
};
// .cpp
const char test::array[] = { '1', '2', '3' };
Лучшее место будет в исходном файле
// Header file
class test
{
const static char array[];
};
// Source file
const char test::array[] = {'1','2','3'};
, вы можете инициализировать целочисленные типы в декларации класса, как вы пытались сделать; Все остальные типы должны быть инициализированы за пределами декларации класса, и только один раз.