C++ 在C++;

C++ 在C++;,c++,struct,hashmap,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

我正在处理一个遗留代码,有一个类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;
  } ;
我无法理解的是,我应该在何处定义此结构映射值

我的理解是:

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

请建议。

如果您在类中声明类型,它就像枚举声明一样,您没有分配新实例。只有在映射中创建对象时才会发生这种情况。

如果在类中声明类型,就像enum声明一样,您不会分配新实例。只有在映射中创建对象时才会发生这种情况。

“如果我每次创建对象时都将其添加到类中,则会分配一个结构变量。”你为什么这么认为?如果你展示一些代码来演示第一个问题,这会有所帮助,因为有一些误解。。。或者也许你已经对所给予的感到满意了answer@AlgirdasPreidžius抱歉,我的理解是错误的,我感谢提供的答案“如果我在创建对象时将其添加到类中,就会分配一个struct var”。你为什么这么认为?如果你展示一些代码来演示第一个问题,会有所帮助,因为有一些误解。。。或者也许你已经对所给予的感到满意了answer@AlgirdasPreidžius抱歉,我的理解是错误的,我感谢提供的答案