В следующем сегменте кода
vector<SceneObject *> sceneObjs; vector<SceneObject *>::iterator iter; iter = sceneObjs.begin(); while (iter != sceneObjs.end()){ cout << **iter <<endl; iter++; }
почему у ** iter есть два * s?
Первый * разыменовывает итератор, давая указатель SceneObject *.Второй * разыменовывает этот SceneObject * указатель на сам SceneObject.
SceneObject *
SceneObject
Поскольку *iter является SceneObject *& - a SceneObject указателем . Вам нужно разыменовать его, чтобы добраться до реального SceneObject.
*iter
SceneObject *&
Поскольку *iter возвращает SceneObject*, который затем будет снова разыменован второй *.
SceneObject*
*
Первый * возвращает значение в итераторе, указатель SceneObject*.Второй * задерживает этот указатель, давая SceneObject.Я подозреваю, что есть перегрузка для <<, которая делает SceneObject` потоком
<<