我有static map
一个private
数据成员。如何在实现文件中对其进行初始化,使其初始容器为空?它不是const
。重要的是,开始时此容器中没有任何内容。
user195488
问问题
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 回答