在类定义中初始化静态常量成员映射<>
问题描述:
我想在我的类中有一个const std :: map,并且我希望它在其他实例中重用此数据结构时是静态的。不幸的是,它不会编译和我在CPP底漆发现是:在类定义中初始化静态常量成员映射<>
但是,我们可以提供一流初始化为有常量整数类型,且必须为静态成员 是constexprs这样做静态成员字面类型(Primer 5th)。
我的代码看起来像:
clase worker {
//.....
private :
//.....
static map<string, string> const map_{...};
}
那么,有没有一个面向对象的技术,再利用这种数据结构,假设我们有工人的几十map_大?
答
看来你只是与类成员相关的片C++语法的陌生:
class worker
{
private:
static const std::map<std::string, std::string> m_;
};
const std::map<std::string, std::string> worker::m_ = {
{ "foo", "bar" },
{ "abc", "def" },
};
的成员定义通常生活在一个单独的.cpp
文件,以便其包含翻译单元仅出现一次链接。