Я читал о 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 не был инициализирован, даже если он находится в статической библиотеке?
Большое спасибо.