void PreorderIterator::First(){
Iterator<Glyph*>* i=_root->CreateIterator(); if(i){
i->First();
_iterators.RemoveAll();
_iterators.Push(i);
}
}
--------
其中_root->CreateIterator();返回的应当是指向_root的Iterator, 然后再做递归i->First();岂不是死循环了嘛. 我相信四位巨头所写的东西应该不会错,但自己就是不能明白。
我想知道的是:CreateIterator(); 和i->First(); 这两个方法到底做了什么工作。
非常感谢!
Iterator<Glyph*>* i=_root->CreateIterator(); if(i){
i->First();
_iterators.RemoveAll();
_iterators.Push(i);
}
}
--------
其中_root->CreateIterator();返回的应当是指向_root的Iterator, 然后再做递归i->First();岂不是死循环了嘛. 我相信四位巨头所写的东西应该不会错,但自己就是不能明白。
我想知道的是:CreateIterator(); 和i->First(); 这两个方法到底做了什么工作。
非常感谢!
Iterator<Glyph*>* i=_root->CreateIterator(); if(i){
i->First(); //这里不是调用的PreorderIterator::First()
_iterators.RemoveAll();
_iterators.Push(i);
}
}
===>依赖于root如何实现CreateIterator