私はデータメンバーstatic map
であるを持っています。private
初期コンテナが空になるように実装ファイルで初期化するにはどうすればよいですか? そうではありませんconst
。開始時にこのコンテナーに何も入っていないことが重要です。
31116 次
3 に答える
11
ヘッダ:
class XXX {
private:
static std::map<X,Y> the_map; // declares static member
// ...
実装ファイル:
std::map<X,Y> XXX::the_map; // defines static member
これにより、マップのコンストラクタ呼び出しがプログラムの初期化コードに挿入されます (およびデストラクタがクリーンアップに挿入されます)。ただし注意してください - 異なる翻訳単位間でのこのような静的コンストラクターの順序は定義されていません。
于 2012-06-28T15:06:11.630 に答える
8
これはどうですか(私があなたを正しく理解していれば):
std::map<T,T2> YourClass::YourMember = std::map<T,T2>();
于 2012-06-28T15:01:25.270 に答える
3
クラス定義で宣言する場合は、実装で定義する必要があります。
--- test.h ---
// includes and stuff...
class SomeClass
{
private:
static std::map<int,std::string> myMap;
};
--- test.cpp ---
std::map<int,std::string> SomeClass::myMap; // <-- initialize with the map's default c'tor
初期化も提供できます。
std::map<int,std::string> SomeClass::myMap = std::map<int,std::string>(myComparator);
于 2012-06-28T15:06:17.970 に答える