nie mam vector
która posiada wskaźniki do abstrakcyjnego typu Rock
:iteracja błędu wektor przyczyna ale średnia dla pętli nie
vector<Rock*> rocks;
Gdybym pętli wektora z iteratora, a następnie spróbuj uzyskać dostęp do przedmiot (nie-klasa abstrakcyjna, która rozciąga Rock
) poprzez iterator, pojawia się błąd „” EXC_BAD_ACCESS w Xcode 4:
vector<Rock*>::iterator rockIter;
for (rockIter = rocks.begin(); rockIter != rocks.end(); ++rockIter)
{
bullet.hit(*(*rockIter));
}
Ale przelotowego normalnie jak ma problemu:
for (int i = 0; i < rocks.size(); i++)
{
bullet.hit(*rocks[i]);
}
Funkcja hit()
wygląda następująco:
bool Bullet::hit(Rock & rock)
Myślałem, że *(*rockIter)
i *rock[i]
zrobi to samo, ale oczywiście oni nie. Co jest innego i jak mogę przekazać referencję obiektu w wektorze za pomocą iteratora, tak jak robię to z *rock[i]
?
Warto wspomnieć, że zamiast surowych wskaźników należy użyć wektora inteligentnych wskaźników. Sprawiają, że twoje życie jest o wiele łatwiejsze. – chris