LINUX.ORG.RU

Порядок иницилизации/создания глобальных переменных в C++


0

0

есть ли какой-нибудь определенный порядок?

т.е. хочется реализовать вот что

в модуле список.cpp объявляется list_of_something - это std::map
в модуле А.cpp объявлятеся
class А {
public:
A(void)
{
list_of_something["a"]=some_value;
}
} a;

в модуле Б.cpp аналогично

и вот интересно
будет ли существовать list_of_something когда будет создаваться
глобальные переменные а и б?

и если это не всегда как, то как можно заставить его создаться до
иницилизации а и б?

anonymous

"Нет гарантированного порядка инициализации глобальных переменных из различных единиц трансляции" - цитата из Страуструпа. Из него же пример замены глобальной переменной функцией, возвращающей ссылку:

std::map<...> &list_of_something() { static std::map<...> lst; return lst; }

Инициализация списка происходит при первом использовании.

hbee ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.