//Константы сообщения
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}.
Соответственно, при запуске программы структура представляет набор пустых строк :(
Как сделать, чтобы создание статического поля происходило посже.
Нормальное поведение. Если хочется что бы доступно было в статической переменной - определи функцию типа инициализации или грузи из ресурсов