mfo*_*ini 35
如果您使用的是C++ 11,则可以使用初始化列表:
//MyClass.h
class MyClass {
public:
typedef std::map<std::string, int> OpMap;
static OpMap opMap_;
};
//MyClass.cpp
MyClass::OpMap MyClass::opMap_ = {
{ "x", 1 }
};
Run Code Online (Sandbox Code Playgroud)
如果您无权访问支持C++ 11标准的编译器,则可以执行以下操作:
//MyClass.h
class MyClass {
public:
typedef std::map<std::string, int> OpMap;
static OpMap opMap_;
private:
static OpMap init_map() {
OpMap some_map;
some_map["x"] = 1;
return some_map;
}
};
//MyClass.cpp
MyClass::OpMap MyClass::opMap_ = init_map();
Run Code Online (Sandbox Code Playgroud)
当您使用 VS2010 时,您需要在 MyClass.cpp 中初始化您的静态成员,在任何其他成员函数定义之前。MyClass::InitMap()
如果要初始化,请致电opMap_
。
我的类.h
class MyClass
{
public:
MyClass(void);
~MyClass(void);
public:
typedef std::map<std::string, int> OpMap;
static OpMap opMap_;
static void InitMap();
};
Run Code Online (Sandbox Code Playgroud)
我的类.cpp
std::map<std::string, int> MyClass::opMap_;
MyClass::MyClass(void)
{
InitMap(); // just sample if you want to initialize opMap_ inside MyClass constructor
}
void InitMap()
{
MyClass::opMap_["x"] = 1;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
54209 次 |
最近记录: |