类内部类型

时间:2016-10-04 21:38:17

标签: c++ c++11 static c++14

我有一个类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,所以我们不会回答这个问题。

1 个答案:

答案 0 :(得分:2)

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

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