QT4: получить ссылку на элемент из итератора (как из QLIST(t_struct)::iterator получить *t_struct ?)

Модератор: Модераторы разделов

Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

QT4: получить ссылку на элемент из итератора

Сообщение Denjs »

собственно сабж.
В общем надо сделать следующую фичу:

Есть список элементов типа t_struct

Код: Выделить всё

QList<t_struct> list;

есть итератор исправно бегающий по этому списку

Код: Выделить всё

QList<t_struct>::iterator list_iterator;

есть указатель

Код: Выделить всё

t_struct *struct;


надо проинициировать указатель struct если есть list_iterator указывающий на какой-то элемент списка list.
в общем что бы struct указывал на элемент типа t_struct содержащийся внутри элемента на который указывает list_iterator?
это возможно?
И в чем могут быть "мины" такого подхода?

(я понимаю что итератора вроде достаточно для доступа к элементу... но мне нужно именно t_struct *struct ...)
дайте пример кода если можно? в QT Assistant есть описание оператора "->" но как его использовать кроме как доступа к полям внутри элемента списка не понимаю...
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: QT4: получить ссылку на элемент из итератора

Сообщение eduard_pustobaev »

Честно говоря не понял, в чём проблема. К QList ведь не обязательно обращаться с помощью итератора. Можно спокойно получать элемент по индексу.
list.at(i) либо list[i]
В дисгармонии со вселенной.
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: QT4: получить ссылку на элемент из итератора

Сообщение v04bvs »

struct = list_iterator;
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: QT4: получить ссылку на элемент из итератора

Сообщение sergio »

list<MyType>::iterator it = .......

MyType* p = & * it ;

это ?
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: QT4: получить ссылку на элемент из итератора

Сообщение Denjs »

eduard_pustobaev писал(а):
09.10.2007 08:29
Честно говоря не понял, в чём проблема. К QList ведь не обязательно обращаться с помощью итератора. Можно спокойно получать элемент по индексу.
list.at(i) либо list[i]

мне нужна ссылка. которую можно засунуть в переменную. ссылка чтобы не думать к какому конкретно QList нужно обращаться.
struct = list_iterator;

пробовал... ЕГГОГ в стиле типа не могу преобразовать значение типа итератор к ссылка на такой-то тип...
как буду дома - подробнее сообщу что пишет...

MyType* p = & * it ;

пробовал. и после этого - при попытке обращения к полю в виде

Код: Выделить всё

p->varname
вылазит segmentation fault.
почему-то мне кажется, что *it создает копию хранящегося значения в элементе списка значения... поправьте меня... я понимаю что бред.. но впечатление такое...
отсюда и брать адрес временной копии.. не гут.. но ещё проверю..
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: QT4: получить ссылку на элемент из итератора

Сообщение sergio »

Сделайте минимальный примерчик кода, который делает то, что вы хотите... ну, т.е. не делает то, что вы хотите. :) И покажьте, так будет проще. А то вдруг там сейчас где по соседству баги, мало ли...
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Спасибо сказали: