静态const成员映射的初始化<>在课堂定义中

时间:2016-11-04 00:58:29

标签: c++ oop c++11

我将在我的班级中拥有一个const std :: map,并且我希望在其他实例中重用此数据结构是静态的。不幸的是,它不会编译,我在cpp引物中找到的是:

  

但是,我们可以为具有const整数类型的静态成员提供类内初始化程序,并且必须为静态成员提供这样的初始化程序   是文字类型的缩写(Primer 5th)。

我的代码如下:

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

那么,是否有一种OOP技术可以重用这个数据结构,假设我们有数十个worker并且map_很大?

1 个答案:

答案 0 :(得分:3)

您似乎对类成员的相关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文件中,因此其包含的翻译单元仅在链接中显示一次。