- 598 名前:デフォルトの名無しさん [2009/03/28(土) 08:26:05 ]
- めちゃくちゃ環境依存(処理系依存)の問題だと思うので、こちらで質問です。
下記のように、CHogeHogeのクラス変数を初期化するのに、別のシングルトンクラス(CHoge)のメソッドの 戻り値を与えるコードを書いたところ、CHogeHogeのクラス変数を初期化するタイミングではまだCHogeが 生成されておらず、落ちます。コメント内のコードもうまくいきそうですがNGです 恐らくリンクオプションとか、pragmaで逃げられそうに思うのですが 対策方法を教えてください。処理系はVC6 SP5です 「CHogeHoge.cpp」 CHogeHoge* CHogeHoge::s_pInstance = new CHogeHoge(); // static CHogeHoge* CHogeHoge::GetInstance() { return s_pInstance; } int CHogeHoge::GetValue() { return m_Value; } /* -- これもNG CHogeHoge CHogeHoge::s_Instance; // static CHogeHoge* CHogeHoge::GetInstance() { return &s_Instance; } */ 「CHoge.cpp」 const int CHoge::STATIC_VALUE = CHogeHoge::GetInstance()->GetValue(); なお、GetInstance内でnewすれば問題解決するとは思いますが、それ以外の方法でお願いします。
|

|