类定义中静态 const 成员 map<> 的初始化

Fra*_*ang 1 c++ oop c++11

我将在我的类中有一个 const std::map,并且我希望它是静态的,以便在其他实例中重用这个数据结构。不幸的是,它不会编译,我在 cpp 入门中发现的是:

但是,我们可以为具有 const 整型类型的静态成员提供类内初始值设定项,并且必须为文字类型的 constexprs 的静态成员提供此类初始化器(入门 5)。

我的代码看起来像:

clase worker {
//.....
private :
//.....
static map<string, string> const map_{...};
}
Run Code Online (Sandbox Code Playgroud)

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

Ker*_* SB 5

看来您只是不熟悉类成员的相关 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" },
};
Run Code Online (Sandbox Code Playgroud)

成员定义通常位于单独的.cpp文件中,因此其包含的翻译单元仅在链接中出现一次。