【发布时间】:2009-09-03 10:49:30
【问题描述】:
我在调试 C++ 类时碰壁了。这是一个图表,类似于:
class Graph {
class Node {
std::map<int, Node>::iterator _neighbors[4];
};
std::map<int, Node> _map;
};
基本上,每个节点通过将迭代器存储到包含类的映射中来精确跟踪 4 个邻居。
问题是当我在调试过程中去显示VS2008中_map的内容时,我得到了这样的东西:
- _map
- [0]
first
- second
- _neighbors
- _ptr
first
- second
- _neighbors
- _ptr
first
- second
- _neighbors
...
显然,它没有列出地图中索引为 0 的节点的 4 个邻居,而是列出了它的第一个邻居,然后是第一个邻居的第一个邻居,然后是它的第一个邻居,以此类推直到无穷大。此外,_neighbors 绝不会以数组的形式出现,即使它被声明为数组。
我发现了一个名为 VSEDebug 的插件,据说它增强了 STL 显示,但它是针对 VS2k3 的,我无法让它在 2k8 中工作(既不是二进制文件,也不是我自己编译的)。
即时窗口也没有太大帮助,因为尝试调用 _map.operator[] 会返回 CXX0058: Error: overloaded operator not found。
有什么想法可以让我的地图内容得到有意义的显示吗?请注意,作为一个整体,我对 VS 相当陌生,所以我可能需要详细说明。 :)
【问题讨论】:
-
VS 2008 对我来说显示地图非常好。
标签: c++ visual-studio debugging