Russian Qt Forum

Qt => Общие вопросы => Тема начата: akaMDA от Ноябрь 24, 2010, 22:17



Название: QList< QList<int> >
Отправлено: akaMDA от Ноябрь 24, 2010, 22:17
Код:
 QList< QList<int> > *table;

 table = new QList< QList<int> >;

table->at(1).append(1);
Элемент не добавляется! получается что функция не можнт быть квалифицировна, т.к. перегружена для int и QList<int>. Что делать?


Название: Re: QList< QList<int> >
Отправлено: akaMDA от Ноябрь 24, 2010, 22:19
Хотя обычный QList<int> работает...


Название: Re: QList< QList<int> >
Отправлено: Пантер от Ноябрь 24, 2010, 22:21
QList<int> list;
list.append (1);
table->append (list);


Название: Re: QList< QList<int> >
Отправлено: BRE от Ноябрь 24, 2010, 22:23
Посмотреть, а что же возвращает:
const T & QList::at ( int i ) const

потом посмотреть, а что возвращает один из вариантов оператора:
T & QList::operator[] ( int i )

Подумать.  :)


Название: Re: QList< QList<int> >
Отправлено: serg_hd от Ноябрь 24, 2010, 23:40
Либо
Код
C++ (Qt)
table->operator [](0).append(1);
 
либо (можно также заюзать оператор вставки вместо метода "append()", например, "(*table)[0] << 1")
Код
C++ (Qt)
(*table)[0].append(1);
 
Это при условии, что table содержит хотя бы один элемент, и, как правильно заметил BRE, table->at() возвратит const, поэтому пользоваться методом at() при вставке, естественно не стоит.
И вообще, к чему
Код
C++ (Qt)
table->at(1).append(1);
 
если table к тому моменту ещё пуст? ;D