gpt4 book ai didi

c++ - 类内部类型的静态私有(private)成员

转载 作者:行者123 更新时间:2023-11-28 02:00:21 25 4
gpt4 key购买 nike

我有一个类 myClass,其中定义了一个类型 myType,还有一个 static const std::map 使用这个类型。我必须如何初始化成员?

情况是这样的。编译器告诉我:MyClass::myMap 的多个定义。但实际上只有一个定义。这个初始化(示意性地)正确吗?

class myClass
{
struct myType
{
// ...
};
static const std::map<int, myType> myMap;
};

const std::map<int, myType> myClass::myMap = {
{1, {"hello myType", 99, "woops"}},
{2, {"hello again", 66, "holla"}},
{3, {"and bye", 33, "adios"}}
};

它不是重复的,因为建议问题中的 const 成员不是静态的。

还有这个问题:Initializing private static members不回答问题,因为 static const 成员是 int 的。

最佳答案

正如所写,声明和定义都在同一个文件中。如果您这样做,并且在多个地方“#include”文件,将会创建多个定义。

静态值通常在 C++ 源文件中单独初始化,而不是在带有类的头文件中。

关于c++ - 类内部类型的静态私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39862181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com