我正忙于用 C++ 实现图形 ADT。我有边和顶点的模板。在每个顶点处,我都有一个 vector ,其中包含指向与其关联的边的指针。现在我试图在这些边缘上获得一个迭代器。这些是代码行:
vector<Edge<edgeDecor, vertexDecor, dir>*> edges = this->incidentEdges();
vector<Edge<edgeDecor, vertexDecor, dir>*>::const_iterator i;
for (i = edges.begin(); i != edges.end(); ++i) {
但是,编译器不会接受中间线。我对 C++ 很陌生。我错过了什么吗?为什么我不能在 Edge 模板的对象上声明迭代器?编译器没有提供任何有用的反馈。
非常感谢 尼尔
最佳答案
如果该片段来自模板,您可能遇到了相关名称的问题 - 使用 typename
:
typename vector<Edge<edgeDecor, vertexDecor, dir>*>::const_iterator i;
typename
告诉编译器您指的是一个类型。没有它,依赖名称将被假定为不是类型或模板。
有关更多详细信息,请查看例如Comeaus template FAQ .
关于c++ - 如何从模板中的对象 vector 上获取迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2477053/