2010-08-12 113 views
2

我不能像STL迭代器那样取消引用QMutableListIterator - 使用* it。从QMutableListIterator获取当前项目

我想使用QMutableListIterator :: value()但我的程序崩溃。什么是正确的方法来做到这一点?

QFileInfoList files; 
// populate list 
QListIterator<QFileInfo> it(files); 
it.toFront(); 
QFileInfo = it_top.value(); 
// crash 

的错误是

ASSERT: "item_exists()" in file /usr/include/qt4/QtCore/qlist.h, line 778 

感谢

+0

你可以发布一些代码,您可以重现该问题? – Naveen 2010-08-12 11:13:38

+0

是的,其实我错过了一些东西。挂在 – MVG 2010-08-12 11:17:24

+0

@MVG:我不知道Qt,但it_top正确初始化? – Naveen 2010-08-12 11:24:00

回答

2

我只是检查了Qt的文档 “toFront” 和它说:

移动的迭代器的前面 容器(在第一个项目之前)。

http://doc.trolltech.com/latest/qmutablelistiterator.html#toFront

Qt的迭代器是Java风格的迭代该项目之前开始,在最后一个项目结束时,C++风格的迭代开始的第一项和最后一项后结束。

0

您显示的代码没有任何问题。

实际上,问题在于在// populate list

其实我想没有得到项目在QFileInfoList填充。这就是为什么当你尝试访问它时你得到了ASSERT

并检查返回值为hasNext()。最有可能它会返回false。

希望它有助于在某些方面..

+0

嘿,谢谢。 hasNext()工作正常,并且列表肯定是填充好的。我认为@哈普洛的评估是正确的 – MVG 2010-08-12 13:25:49