我在调试我的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:错误:找不到重载运算符
。
有什么想法可以让我获得有意义的地图内容显示吗?请注意,我对整个VS还比较新手,所以可能需要详细的说明。:)