我想要一个CMap:
CMap<long,long, Cmap<long,long,long,long>>
所以我的数据结构将长为一个键,它将重定向到一个值,并且该值将是其内部的long的cmap。
示例:如果我收到“1”,那么它会将我发送给CMap 如果我收到2,它会发给我一个不同的cmap。
这可能吗?
不能使用std / stl地图。必须在此项目中使用MFC CMap对象。
感谢。
答案 0 :(得分:4)
根据this answer,CMap
没有复制构造函数,这就是为什么你不能在另一个中包含一个复制构造函数的原因。您仍然可以将指针存储到CMap
。
答案 1 :(得分:2)
我认为您在CMap中存储的内容没有任何限制,因此您可以这样做,但
我强烈建议您使用标准库容器。它们是标准的原因。这使得它们更易于维护,并使未来的开发人员更容易阅读代码。 MS也将使用新的编译器进行带外C ++编译器更新,因此您可以通过重新编译来获得奖励改进。
std::map<long, std::map<long, long> > myMapOfMaps;
修改强>
我检查了CMap的头文件并且@DaveRager是正确的,没有复制构造函数,所以你唯一的选择就是让CMap为CMap *或者使用std :: map。我强烈推荐标准地图。
<强> EDIT2:强>
根据您的声明,您不允许在项目中使用标准库,那么您将不得不使用long
到CMap*
的地图。我建议你与建筑师谈谈,找出他们不希望你使用标准图书馆馆藏的原因。一旦理解了标准集合的设计,它们就会使代码更加干净和可读。
答案 2 :(得分:0)
感谢您的回答。
存储指向CMap的指针的解决方案有效,但风险太大。
我们使用的另一个解决方案是制作包含CMap的对象的地图。该类将包含标识符和其中的cmap。 意思是:
CMap LiveDisconnectionCache;
再次感谢