这个问题在很多次之前就已经被问过了,但我确实做了答案所说的,而且它们都会出现语法错误。
我尝试了多种方法,这只是我尝试过的最后一种方法。
vector<Ent*>World;
// other code here
for( vector<Ent*>::iterator i = World.begin();
i != World.end(); ++i )
{
World[i]->GetID();
}
答案 0 :(得分:5)
语法错误。
World[i]->GetID();
i
是一个迭代器,而不是整数索引。
使用
(*i)->GetID();
答案 1 :(得分:3)
对于向量,[]运算符是一个索引访问器,当您想要将元素作为索引(即数字)访问容器时使用,例如:
for( int i = 0;
i < World.size(); ++i )
{
World[i]->GetID();
}
另一方面,您正在使用迭代器。迭代器对象本身是指容器的元素,因此您必须更改语法:
for( vector<Ent*>::iterator i = World.begin();
i != World.end(); ++i )
{
(*i)->GetID();
}
请注意,迭代器为您提供了一个与元素类似的指针接口,这就是您在访问该成员之前必须首先取消引用它(* i)的原因。