我有一个vector
持有指针抽象类型Rock
:迭代通过向量原因错误,但标准的for循环不
vector<Rock*> rocks;
如果通过与迭代器的矢量,然后我循环试图访问对象通过迭代(即延伸Rock
一个非抽象类),I XCode中4得到一个“EXC_BAD_ACCESS”错误:
vector<Rock*>::iterator rockIter;
for (rockIter = rocks.begin(); rockIter != rocks.end(); ++rockIter)
{
bullet.hit(*(*rockIter));
}
但是通过它通常喜欢循环是没有问题:
for (int i = 0; i < rocks.size(); i++)
{
bullet.hit(*rocks[i]);
}
功能hit()
看起来像:
bool Bullet::hit(Rock & rock)
我认为*(*rockIter)
和*rock[i]
会做同样的事情,但他们显然不。有什么不同,以及如何通过迭代器传递矢量中对象的引用,就像我使用*rock[i]
一样?
值得一提的是,你会想使用智能指针的矢量而不是原始指针。他们让你的生活变得更加轻松。 – chris 2012-03-30 02:39:10