Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Ошибка при работе QVector< T <T> > или QList

Автор: horse315 18.4.2010, 23:09

Здравствуйте!
Имеем такое дело:

struct HasseRange{
    QVector<unsigned int> mark;
    QVector<QList <QChar> > vlist;
};
...

    struct HasseRange hr;
    QList<QChar> QL_QC_TMP;

    QList<QChar>::const_iterator it = Vr.constBegin();
    for(;it!=Vr.constEnd();++it){
        hr.mark.append(0);
        QL_QC_TMP.clear();
        QL_QC_TMP.append(*it);
        hr.vlist.append(QL_QC_TMP);
        //hr.vlist.append(*it);
    }

и теперь внимание:

    hr.vlist.at(1).append(QChar('a'));

Такая штука при попытке скомпилить дает следующее сообщение:

H:/bsd/graph/makehasse.cpp:28: error: passing `const QList<QChar>' as `this' argument of `void QList<T>::append(const T&) [with T = QChar]' discards qualifiers

Designer в качестве аргумента аппенд предлагает и QChar и QList<QChar> все одно, результат один и тот же. Что тут за this такой вообще не понятно. Пробовал обойти все, заменить на QList<QString>, получил то же самое. Где я наглупил, скажите пожалуйста.

p.s.
НО если тот же append сделать через итератор, то все просто прекрасно работает!

Автор: MoPDoBoPoT 19.4.2010, 5:51

Метод QList::at() возвращает константную ссылку на объект, а ты в hr.vlist.at(1).append(QChar('a')) хочешь константный объект с помощью QList::append() изменить. Используй оператор [] или итератор (для цикла он шустрее будет).

Автор: horse315 19.4.2010, 6:51

Цитата(MoPDoBoPoT @ 19.4.2010, 6:51) *
Метод QList::at() возвращает константную ссылку на объект, а ты в hr.vlist.at(1).append(QChar('a')) хочешь константный объект с помощью QList::append() изменить. Используй оператор [] или итератор (для цикла он шустрее будет).


спасибо, все понятно.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)