Tengo un vector
que contiene punteros para abstraer tipo Rock
:iteración a través de un vector de error causa sino bucle for norma no
vector<Rock*> rocks;
Si bucle a través del vector con un iterador y luego tratar de acceder al objeto (una clase no abstracta que se extiende Rock
) a través del repetidor, me sale un error 'EXC_BAD_ACCESS' en Xcode 4:
vector<Rock*>::iterator rockIter;
for (rockIter = rocks.begin(); rockIter != rocks.end(); ++rockIter)
{
bullet.hit(*(*rockIter));
}
Pero bucle a través de lo que normalmente le gusta es ningún problema:
for (int i = 0; i < rocks.size(); i++)
{
bullet.hit(*rocks[i]);
}
La función hit()
parece:
bool Bullet::hit(Rock & rock)
pensé que *(*rockIter)
y *rock[i]
haría lo mismo pero es evidente que ellos no. ¿Qué es diferente y cómo puedo pasar una referencia de un objeto en el vector a través de un iterador como hago con *rock[i]
?
Vale la pena mencionar que querrá utilizar un vector de punteros inteligentes en lugar de punteros sin procesar. Ellos hacen tu vida mucho más fácil. – chris