Ubuntu で c++ を実行しています。
configuration.h ファイルには、これがあります (グローバル):
static const string APP_CONFIG_FILE_NAME = "cfg";
私のconfiguration.cpp(ちなみにシングルトンであるため、負荷設定はConfigurationのコンストラクターによって呼び出されます)で、私はこれを行います:
void Configuration::loadConfiguration() {
cout<< "config file name " << APP_CONFIG_FILE_NAME.data();
load();
}
ロード構成は別のグローバルから呼び出されます: (これが失敗の重要なポイントです)
Timer t(Configuration::Instance()->timeout);
コスト文字列が初期化されていない (空) ことがわかります。文字列を char* に置き換えると、予想される順序で初期化されます。
ただし、別のプログラムでは、同じクラスの構成が機能するため、問題がわかりません。
別の質問がありますが、グローバルではないため、同じではありません。