我将在我的类中有一个 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技术来重用这个数据结构?
看来您只是不熟悉类成员的相关 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文件中,因此其包含的翻译单元仅在链接中出现一次。