我正在研究一个应该代表图形的程序.我的问题在于我的printAdjacencyList函数.基本上,我有一个Graph ADT,它有一个成员变量"nodes",它是该图的节点的映射.每个节点都有一组Edge*连接到它的边缘.我试图迭代图中的每个节点和节点的每个边缘.
void MyGraph::printAdjacencyList() {
std::map<std::string, MyNode*>::iterator mit;
std::set<MyEdge*>::iterator sit;
for (mit = nodes.begin(); mit != nodes.end(); mit++ ) {
std::cout << mit->first << ": {";
const std::set<MyEdge*> edges = mit->second->getEdges();
for (sit = edges.begin(); sit != edges.end(); sit++) {
std::pair<MyNode*, MyNode*> edgeNodes = *sit->getEndpoints();
}
}
std::cout << " }" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
getEdges声明为:
const std::set<MyEdge*>& getEdges() { return edges; };
Run Code Online (Sandbox Code Playgroud)
并获取Endpoints声明为:
const std::pair<MyNode*, MyNode*>& getEndpoints() { return nodes; };
Run Code Online (Sandbox Code Playgroud)
我得到的编译器错误是:
MyGraph.cpp:63: error: request for member `getEndpoints' in
`*(&sit)->std::_Rb_tree_const_iterator<_Tp>::operator->
[with _Tp = MyEdge*]()', which is of non-class type `MyEdge* const'
MyGraph.cpp:63: warning: unused variable 'edgeNodes'
Run Code Online (Sandbox Code Playgroud)
我已经发现这可能意味着我在某处滥用const,但我无法弄清楚我的生活在哪里.任何信息,将不胜感激.谢谢!