在类定义中初始化静态常量成员映射<>

Initialization of static const member map<> in class definition

本文关键字:映射 gt lt 成员 常量 定义 初始化 静态      更新时间:2023-10-16

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

但是,可以为const整型的静态成员提供类内初始化式,并且必须为const整型的静态成员提供类内初始化式是文字类型的构造符(Primer 5)。

我的代码如下:

clase worker {
//.....
private :
//.....
static map<string, string> const map_{...};
}
那么,是否存在一种OOP技术来重用这个数据结构,假设我们有几十个worker并且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文件中,因此包含它的翻译单元只在链接中出现一次。