私はよくある質問でSIOFについて読みましたが、それでも問題が発生する理由がよくわかりません。静的ライブラリ(.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データメンバーオブジェクトが初期化されなかったのはなぜですか?
どうもありがとう。