在向量中访问 类
Accessing classes in vectors
这个问题已经问过很多次了,但是我完全按照答案说的去做,而且都是语法错误。
我尝试了多种方法,这只是我尝试的最后一种方法。
vector<Ent*>World;
// other code here
for( vector<Ent*>::iterator i = World.begin();
i != World.end(); ++i )
{
World[i]->GetID();
}
语法错误。
World[i]->GetID();
i
是迭代器,不是整数索引。
使用
(*i)->GetID();
对于向量,[] 运算符是一个索引访问器,当您想要将元素作为索引(即数字)访问到容器中时使用,例如:
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) 才能访问该成员。
这个问题已经问过很多次了,但是我完全按照答案说的去做,而且都是语法错误。
我尝试了多种方法,这只是我尝试的最后一种方法。
vector<Ent*>World;
// other code here
for( vector<Ent*>::iterator i = World.begin();
i != World.end(); ++i )
{
World[i]->GetID();
}
语法错误。
World[i]->GetID();
i
是迭代器,不是整数索引。
使用
(*i)->GetID();
对于向量,[] 运算符是一个索引访问器,当您想要将元素作为索引(即数字)访问到容器中时使用,例如:
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) 才能访问该成员。