在C ++

时间:2019-02-13 12:49:11

标签: c++ struct hashmap

我正在处理旧版代码,有一个A类,它的枚举成员定义如下

class A
{
private:
 enum E{ kRemove, kDoNotRemove};
 static map<String, MapValue> s_Map; //this map I am trying to add
}

我正在尝试在此类中添加一个地图,该地图将具有类似这样的结构

 struct MapValue{
      E e; //this enum is defined in private section in the class
      String T;
      String F;
  } ;

我不知道应该在哪里定义此结构MapValue?

我的理解:

  • 如果我将其添加到类中,则每当创建对象时, struct var将被分配。这没有用,因为我正在使用它 struct仅作为地图的值。我也不是这样 我只需要此结构的一个副本,因为我正在将其用作值 地图。
  • 如果我在课外添加它,那将不是一个很好的设计,因为 struct仅在类内部,因此它不应是全局的。还有 struct具有枚举成员,该成员在类中定义为私有,因此 在课堂以外无法访问。

请提出建议。

1 个答案:

答案 0 :(得分:2)

如果在类内声明类型,就像枚举声明一样,您就不会分配新实例。仅当在地图上创建对象时才会发生这种情况。