Я читал о SIOF в faq-lite и до сих пор не понимаю, почему возникает проблема. У меня есть статическая библиотека (.a), и я использую эту библиотеку для использования ее статического типа объекта-члена данных const. Затем этот статический тип объекта-члена данных const я использую и назначаю глобальной переменной (объекту). Но кажется, что глобальная переменная пуста, когда я использую эту глобальную переменную для своей основной или любой локальной функции. Я, очевидно, знаю, что моя проблема - SIOF, но я действительно не понимаю, почему мой статический объект-член данных const не был инициализирован.
Это была статическая библиотека, поэтому я предполагаю, что когда мы создали нашу статическую библиотеку, статический объект-член данных const был скомпилирован и связан с этой статической библиотекой, поправьте меня, если я ошибаюсь.
//libsource.h
class foo
{
public:
....
public:
static const barbar foofaa;
};
//libsource.cpp
const barbar foo::foofaa = barbar();
//main.cpp
#include <libsource.h>
barbar foos= foo::foofaa;
int main()
{
//can't use foos because its empty
}
Пожалуйста посоветуй. Почему этот статический объект-член данных const не был инициализирован, даже если он находится в статической библиотеке?
Большое спасибо.