Позвольте мне повторить другие ответы, которые вы, возможно, захотите пересмотреть, используя для этого глобальные значения. Однако одно возможное (и, я уверен, все еще ошибочное) улучшение по крайней мере устраняет необходимость в приоритете инициализации.
Вместо использования глобального vector
вы создаете функцию, которая возвращает ссылку на статическую локальную переменную. Правила C ++ гарантируют, что функция static local всегда инициализируется не позднее первого использования, поэтому вам не нужно беспокоиться о том, что вектор не инициализируется.
vector<LibInfo*>& get_gvLibInfo()
{
vector<LibInfo*> gvLibInfo;
return gvLibInfo;
}
Тогда ваша регистрация выглядит так:
vector<LibInfo*>& get_gvLibInfo();
void reglib()
{
get_gvLibInfo().push_back(this);
}