我有一个类myClass
,其中定义了一种类型,myType
和一个使用此类型的static const std::map
。我该如何初始化会员?
情况是这样的。编译器告诉我:multiple definition of 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
,所以我们不会回答这个问题。
答案 0 :(得分:2)
如上所述,声明和定义都在同一个文件中。如果您这样做,并且您在多个地方“#include”该文件,则会创建多个定义。
静态值通常在C ++源文件中单独初始化,而不是在带有类的头文件中初始化。