MFC CMap。将cmap存储在cmap中

时间:2012-10-10 16:07:38

标签: c++ mfc

我想要一个CMap:

CMap<long,long, Cmap<long,long,long,long>>

所以我的数据结构将长为一个键,它将重定向到一个值,并且该值将是其内部的long的cmap。

示例:如果我收到“1”,那么它会将我发送给CMap 如果我收到2,它会发给我一个不同的cmap。

这可能吗?

不能使用std / stl地图。必须在此项目中使用MFC CMap对象。

感谢。

3 个答案:

答案 0 :(得分:4)

根据this answerCMap没有复制构造函数,这就是为什么你不能在另一个中包含一个复制构造函数的原因。您仍然可以将指针存储到CMap

答案 1 :(得分:2)

我认为您在CMap中存储的内容没有任何限制,因此您可以这样做,但
我强烈建议您使用标准库容器。它们是标准的原因。这使得它们更易于维护,并使未来的开发人员更容易阅读代码。 MS也将使用新的编译器进行带外C ++编译器更新,因此您可以通过重新编译来获得奖励改进。

std::map<long, std::map<long, long> > myMapOfMaps;

修改
我检查了CMap的头文件并且@DaveRager是正确的,没有复制构造函数,所以你唯一的选择就是让CMap为CMap *或者使用std :: map。我强烈推荐标准地图。

<强> EDIT2:
根据您的声明,您不允许在项目中使用标准库,那么您将不得不使用longCMap*的地图。我建议你与建筑师谈谈,找出他们不希望你使用标准图书馆馆藏的原因。一旦理解了标准集合的设计,它们就会使代码更加干净和可读。

答案 2 :(得分:0)

感谢您的回答。

存储指向CMap的指针的解决方案有效,但风险太大。

我们使用的另一个解决方案是制作包含CMap的对象的地图。该类将包含标识符和其中的cmap。 意思是:

CMap LiveDisconnectionCache;

再次感谢