繁体   English   中英

如何从模板中的对象向量获取Iterator?

[英]How do I get an Iterator over a vector of objects from a Template?

我正在忙用C ++实现Graph 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 ++很陌生。 我想念什么吗? 为什么不能在Edge模板的对象上声明迭代器? 编译器未提供任何有用的反馈。

非常感谢尼尔

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

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

typename告诉编译器您正在引用一种类型。 没有它,从属名称将假定不是类型或模板。

有关更多详细信息,请参见例如Comeaus模板常见问题解答

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM