[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(toppers-users 511) RE: TOPPERS/JSP のコンフィグレータ
- To: <toppers-users at ertl jp>
- From: "Takagi, Yusei" <yusei-t at mx15 freecom ne jp>
- Date: Thu, 5 Sep 2002 21:42:09 +0900
みなさんはじめまして。高木と申します。
> jsp_perser.cppがperser.cppよりも先にリンクされるとプログラムが正常
> に動作しません。具体的には、perser.cpp642行の
> map<string, class ParseUnit *> Directive::container;
> のコンストラクタが、jsp_perser.cpp204行の
> DECLARE_DIRECTIVE(assigner,"assign_id")
> のコンストラクタよりも先に処理されるようにリンクされないと、正常に
> 動作しません。(StaticAPI::containerも多分同様)
コンフィギュレータのリンク順についてですが、Directive::containerを
静的データメンバではなく、静的メンバ関数にすれば解決しそうな気が
します。
こんな感じです。
map<string, class ParseUnit *>* Directive::container()
{
static map<string, class ParseUnit *> instance;
return &instance;
}
関数内で宣言された静的オブジェクトは、最初に実行パスがそこに
差し掛かったときにコンストラクタが呼ばれますから、リンクの順序に
依存しません。
参考までに。
------------------
高木悠成