1

我想要一个 CMap:

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

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

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

这可能吗 ?

不能使用 std/stl 映射。在这个项目中必须使用 MFC CMap 对象。

谢谢。

4

3 回答 3

5

根据这个答案, aCMap没有复制构造函数,这就是为什么你不能在另一个中包含一个。但是,您仍然应该能够存储指向 a的指针CMap

于 2012-10-10T17:05:48.913 回答
2

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

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

编辑:
我检查了 CMap 的标头,@DaveRager 是正确的,没有复制构造函数,所以你唯一的选择是使用长到 CMap* 的 CMap 或使用 std::map。我强烈推荐标准地图。

Edit2:
根据您的声明,您不允许在项目中使用标准库,那么您将不得不求助于 to 的long映射CMap*。我建议您与架构师交谈,了解他们为什么不希望您使用标准库集合。一旦您了解了标准集合的设计,它们就会使代码更加简洁易读。

于 2012-10-10T16:14:45.043 回答
0

感谢您的回答。

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

我们使用的另一个可能想到的解决方案是制作包含 CMap 的对象映射。该类将包含标识符和其中的 cmap。意义:

CMap LiveDisconnectionCache;

再次感谢

于 2012-10-11T07:45:33.240 回答