![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
nobody0 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 20.12.2010 Репутация: нет Всего: нет |
Здравствуйте.
Есть, к примеру, такой примитивный класс:
Необходимо статическую переменную v класса A инициализировать. Причем непросто присвоить какое-то начальное значение, а посредством некоторых манипуляций (через циклы, неоднократное присваивание, пока не выйдет конечный результат). Как это реализовать грамотно в заголовочном файле с классом? Чтобы эта переменная к моменту создания первого объекта класса была инициализирована так, как хочется. Пробовал "напролом" после класса писать нужный код, к примеру,
Но компилятору это не нравится (подчеркивается цикл еще до момента компиляции, пишет: "требуется объявление") Пробовал еще писать отдельную функцию, которая имеется во всех конструкторах и вызывается, если статическая переменная равна 0 (она инициализирована к моменту вызова конструктора этим значением как в примере выше в первой строке кода, без цикла), но, по-моему, это неэффективно, т.к. делаются лишние проверки и загромождает этим код конструкторов, да и все равно там свои ошибки еще возникали, но это уже другое. Так каким же образом грамотно реализовать подобную многоступенчатую инициализацию (т.е. сначала просто инициализация, а потом уже присвоение нужных значений, причем до создания объектов класса)? И еще интересно такое: как аналогично инициализировать статическую константную переменную через какую-то временную? Т.е. то же, чтобы нужные присвоения произошли до создания объекта класса (вся эта функция по присвоению временной переменной нужных значений, а после один раз инициализируется статическая константа)? Так как в процессе программы эта статическая переменная никогда не будет меняться (и не должна, т.к. не предполагается полет программы в прямом смысле с одной машины на другую без прерывания ее работы). Заранее благодарен за любую информацию, в том числе упоминания какой-либо подходящей литературы или статей. Это сообщение отредактировал(а) nobody0 - 29.3.2011, 22:39 |
||||
|
|||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
если компилятор свежий, можно лямбдой:
Это сообщение отредактировал(а) mes - 29.3.2011, 23:01 |
||||
|
|||||
nobody0 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 20.12.2010 Репутация: нет Всего: нет |
mes,
спасибо огромное! Точно же, ведь переменной можно присвоить функцию, вернее, то, что она возвращает. Отлично, теперь спокойно можно делать статическую константу в классе. Спасибо. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |