2016-11-04 82 views
1

我想在我的类中有一个const std :: map,并且我希望它在其他实例中重用此数据结构时是静态的。不幸的是,它不会编译和我在CPP底漆发现是:在类定义中初始化静态常量成员映射<>

但是,我们可以提供一流初始化为有常量整数类型,且必须为静态成员 是constexprs这样做静态成员字面类型(Primer 5th)。

我的代码看起来像:

clase worker { 
//..... 
private : 
//..... 
static map<string, string> const map_{...}; 
} 

那么,有没有一个面向对象的技术,再利用这种数据结构,假设我们有工人的几十map_大?

回答

2

看来你只是与类成员相关的片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文件,以便其包含翻译单元仅出现一次链接。

相关问题