Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Порядок инициализации констант

309
28 февраля 2007 года
el scorpio
1.1K / / 19.09.2006
Суть проблемы в чём: имеется набор констант - строковые значения.
Есть класс (шаблонный) со статическим полем, которое представляет собою структуру из строк.
Значения этой структуры инициируются вышеупомянутыми константами.

Код:
//Константы сообщения
const AnsiString cseInv_Count_Items = "Недопустимое количество элементов (%d).";
const AnsiString cseInv_Index_Item = "Недопустимый номер элемента (%d).";

//..................
// Структура сообщения
struct PACKAGE TmArray_Base
{
//....
    inline __fastcall TmArray_Base (void)
    {
        this->Inv_Count_Items = cseInv_Count_Items;
        this->Inv_Index_Item = cseInv_Index_Item;
    }
};
//..............................................
//Искомый класс
template <class M> class PACKAGE TtError_Message
{
private:
    static M _sBackup; // Исходные сообщения
// прочие поля и методы - неважно
};
// Инициализация статического поля класса
template <class M> M TtError_Message <M>::_sBackup = M();

Суть проблемы: статическое поле инициализируется раньше констант. То есть, при отладке в конструкторе структуры видно, что искомые константы имеют значение {NULL}.
Соответственно, при запуске программы структура представляет набор пустых строк :(

Как сделать, чтобы создание статического поля происходило посже.
1
01 марта 2007 года
kot_
7.3K / / 20.01.2000
Нормальное поведение. Если хочется что бы доступно было в статической переменной - определи функцию типа инициализации или грузи из ресурсов
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог