代码之家  ›  专栏  ›  技术社区  ›  Niel de Wet

如何从模板中获取对象向量的迭代器?

  •  1
  • Niel de Wet  · 技术社区  · 15 年前

    我正忙于在C++中实现一个图形ADT。我有边缘和顶点的模板。在每个顶点上,我都有一个向量,其中包含指向它的边的指针。现在我正试图通过这些边得到一个迭代器。这些是代码行:

    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++很陌生。我错过什么了吗?为什么我不能在边缘模板中的对象上声明迭代器?编译器没有给出任何有用的反馈。

    非常感谢 尼尔

    1 回复  |  直到 15 年前
        1
  •  3
  •   Georg Fritzsche    15 年前

    如果该代码段来自模板,则可能遇到依赖名称的问题-使用 typename :

    typename vector<Edge<edgeDecor, vertexDecor, dir>*>::const_iterator i;
    

    类别名 告诉编译器您引用的是类型。没有它,依赖名称就假定不是类型或模板。

    有关更多详细信息,请查看例如 Comeaus template FAQ .