我将在我的班级中拥有一个const std :: map,并且我希望在其他实例中重用此数据结构是静态的。不幸的是,它不会编译,我在cpp引物中找到的是:
但是,我们可以为具有const整数类型的静态成员提供类内初始化程序,并且必须为静态成员提供这样的初始化程序 是文字类型的缩写(Primer 5th)。
我的代码如下:
clase worker {
//.....
private :
//.....
static map<string, string> const map_{...};
}
那么,是否有一种OOP技术可以重用这个数据结构,假设我们有数十个worker并且map_很大?
答案 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
文件中,因此其包含的翻译单元仅在链接中显示一次。