2010-08-12 3 views
2

Я не могу разыгрывать QMutableListIterator, как итератор STL, с помощью * 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

+0

Да, на самом деле я что-то пропустил. Повесить на – MVG

+0

@ MVG: Я не знаю Qt, но правильно ли он инициализирован? – Naveen

ответ

2

Я только что проверил документацию Qt для "toFront", и он говорит:

перемещает итератор на передней части контейнер (до первого элемента).

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

в Qt итераторы итераторы в стиле Java, которые начинаются до пунктов и оканчиваются на последнем элементе, то ++ итераторы в стиле C начинается с первого пункта и заканчивается после того, как последний.

0

С кодом, который вы указали, нет ничего плохого.

проблема на самом деле лежит в // populate list

На самом деле я думаю ни один элемент не получает заселен в QFileInfoList. Вот почему вы получаете ASSERT при попытке получить к нему доступ.

И проверьте на возвращаемое значение hasNext(). Скорее всего, он вернет ложь.

Надеется, что это помогает в .. некотором образе

+0

Эй, спасибо. hasNext() отлично работает, и список определенно заполнен ок. @ Оценка Хапло справедлива, я думаю – MVG

Смежные вопросы