在以下代码段
中vector<SceneObject *> sceneObjs;
vector<SceneObject *>::iterator iter;
iter = sceneObjs.begin();
while (iter != sceneObjs.end()){
cout << **iter <<endl;
iter++;
}
为什么**它有两个* s?
答案 0 :(得分:12)
第一个*取消引用迭代器,给出一个SceneObject *
指针。第二个*取消引用SceneObject *
指向SceneObject
本身的指针。
答案 1 :(得分:11)
因为*iter
是SceneObject *&
- 一个SceneObject
指针。您需要取消引用才能获得真实的SceneObject
。
答案 2 :(得分:5)
因为*iter
会返回SceneObject*
,然后会被第二个*
取消引用。
答案 3 :(得分:3)
第一个*
返回迭代器中的值,SceneObject*
指针。指针的第二个*
deferences,给出SceneObject
。我怀疑<<
有一个重载,它将SceneObject`呈现为一个流。