crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Ошибка при работе QVector< T <T> > или QList
horse315
  опции профиля:
сообщение 18.4.2010, 23:09
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 18.4.2010
Пользователь №: 1640

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте!
Имеем такое дело:
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
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

Спасибо сказали: 44 раз(а)




Репутация:   9  


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


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 18.4.2010
Пользователь №: 1640

Спасибо сказали: 0 раз(а)




Репутация:   0  


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


спасибо, все понятно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 9.8.2020, 20:00