Как сделать член-элемент класса или структуры статичным? При подобных попытках инициализировать член-элемент класса BaseInfo:
Компилятор ругается:
В структурах тоже самое...
В классе/структуре статические члены только декларируются, их надо ещё определить, тогда компилятор не ругается:
#property strict /******************************************************************************/ class BaseInfo { private: int IndErr; // Индекс ошибок в массиве комментариев static int LotDecimal; //---- Переменные Input }; /******************************************************************************/ int BaseInfo::LotDecimal = 0; /******************************************************************************/ void OnStart() { BaseInfo info; }
Во время определения и инициализировать.
simpleton, Благодарю! Вот об этом я в документации даже упоминания не встречал. Хотя весьма даже базовая необходимость. Мне только одно интересно. Почему объявление в конструкторе тут не подходит? С чем это связано?
simpleton, Благодарю! Вот об этом я в документации даже упоминания не встречал. Хотя весьма даже базовая необходимость. Мне только одно интересно. Почему объявление в конструкторе тут не подходит? С чем это связано?
статический член класса существует даже при отсутствии экземпляров класса, он создается в глобальной области памяти (наверное) в начале старта и живет до смерти программы, эта переменная как глобальная переменная только находится в области видимости класса и имеет модификатор доступа (public, protected, private).
цитата из с+:
Для выделения памяти под эту переменную ее повторно следует объявить в модуле компиляции, в котором она будет использоваться, квалифицируя имя статической переменной именем класса.
Сергей, я то это всё по логике понял. Тут по ходу статическая переменная выносится, чтоб быть видна ВСЕМ объектам данного класса и вообще ВСЕМ объектам и функциях кода (не тока данного класса). Получается, что она объявляется как объект.
Мне вот интересно для структур тоже самое. Или они по умолчанию статичны т.к. члены-элементы и методы открыты. Заметил, что когда перекинул переменную функции проблемной в структуру, код стал работать исправно и значение переменной сохраняется. Правда, не понял почему..
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как сделать член-элемент класса или структуры статичным? При подобных попытках инициализировать член-элемент класса BaseInfo:
Компилятор ругается:
В структурах тоже самое...
Почему спрашиваю. У меня вот есть функция:
Если переменную объявляю, например, в самом эксперте в глобальном уровне, то всё работает отлично. Если она получается из структуры, как и должно быть, то после выхода из тела функции значение переменной SLots.gd_LotStep теряется. В чём причина? Возможно есть какой-то способ сделать данные переменные статичными?