fa ho un vector
che contiene i puntatori a tipo astratto Rock
:scorrendo un errore di vettore di causa, ma standard per-ciclo non
vector<Rock*> rocks;
Se io ciclo attraverso il vettore con un iteratore e quindi provare a accedere alla oggetto (una classe non astratta che estende Rock
) tramite l'iteratore, ottengo un errore 'EXC_BAD_ACCESS' in XCode 4:
vector<Rock*>::iterator rockIter;
for (rockIter = rocks.begin(); rockIter != rocks.end(); ++rockIter)
{
bullet.hit(*(*rockIter));
}
Ma scorrendo normalmente come c'è problema:
for (int i = 0; i < rocks.size(); i++)
{
bullet.hit(*rocks[i]);
}
La funzione hit()
assomiglia:
bool Bullet::hit(Rock & rock)
ho pensato che *(*rockIter)
e *rock[i]
sarebbe fare la stessa cosa ma chiaramente essi non. Che cosa è diverso e come posso passare un riferimento di un oggetto nel vettore tramite un iteratore come faccio con *rock[i]
?
Vale la pena ricordare che vorrete usare un vettore di puntatori intelligenti invece di puntatori grezzi. Rendono la tua vita molto più facile. – chris