у меня есть вектор
, который содержит указатели на абстрактный тип Rock
:
vector<Rock*> rocks;
Если я перебираю вектор с помощью итератора, а затем пытаюсь получить доступ к объекту (неабстрактный класс, который расширяет Rock
) через итератор, я получаю ошибку «EXC_BAD_ACCESS» в XCode 4:
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]
сделают то же самое, но явно не делают этого.В чем разница и как я могу передать ссылку на объект в векторе через итератор, как я делаю с * рок[i]
?