If you're using C++11, you could use initializer lists:
//MyClass.h
class MyClass {
public:
typedef std::map<std::string, int> OpMap;
static OpMap opMap_;
};
//MyClass.cpp
MyClass::OpMap MyClass::opMap_ = {
{ "x", 1 }
};
If you don't have access to a compiler that supports the C++11 standard, you could do the following:
//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();
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…