crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Проблема с пониманием контейнеров.., А точнее недопонимание..
Andrewshkovskii
  опции профиля:
сообщение 17.9.2009, 23:18
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

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




Репутация:   1  


Есть такой вот хитрый контейнер :
QVector < QList <QStandardItem * > > distanceMatrixItems;

Это вектор строк таблицы.
Пытаюсь заполнить его вот так :
void Model::setUpDistanceMatrixModel(int parNum)
{
    bool isNum;
    QString * buf= new QString;
    distanceMatrixModel= new QStandardItemModel();
for ( int i=0;i< rowData.size();++i )
     for ( int j=0;j<rowData.at(i).size();++j)
     {
          buf->setNum(rowData.at(i).at(parNum)->text().toInt(&isNum,10)
                           - //minus
                     rowData.at(j).at(parNum)->text().toInt(&isNum,10),10);
         distanceMatrixItems.at(i).push_back(new QStandardItem(*buf));
         buf->clear();
        }
distanceMatrixModel->setHorizontalHeaderLabels(this->vHeaderData);
distanceMatrixModel->setVerticalHeaderLabels(this->vHeaderData);
emit distanceMatrixModelReady(this->distanceMatrixModel);
}


получаю ..
Цитата
D:/clusters/model.cpp:77: error: passing 'const QList<QStandardItem*>' as 'this' argument of 'void QList<T>::push_back(const T&) [with T = QStandardItem*]' discards qualifiers

Честно говорят, впервые вижу такую ошибку, прощу направить на путь истинный, и если ошибка действительно в незнании, подсказать что почитать :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 18.9.2009, 8:59
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


Цитата(Andrewshkovskii @ 18.9.2009, 0:18) *
discards qualifiers

хорошо кодишь раз впервые видишь.
это ты с квалификатором доступа const поимел проблемы.


const T & QVector::at ( int i ) const

а вообще вложенные шаблоны это жесть.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.9.2009, 10:58
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(kwisp @ 18.9.2009, 12:59) *
а вообще вложенные шаблоны это жесть.
почему же, они довольно часто используются, в том числе и тролями.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 18.9.2009, 11:10
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

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




Репутация:   1  


А, понял, возвращает константную ссылку на вложенный контейнер, по-этому добавить и не могу, надо было по [] обращаться.
Вроде так, и вроде понятно!Спасибо:)
Ну я решил использовать такое представление таблиц..да и QVector < QList < QStandrtItem * > > удобно пользоваться вместе с QStandartModel .. :)
А кодю я , на сколько я себя знаю, не очень хорошо , учиться и учиться ещё!:)

Сообщение отредактировал Andrewshkovskii - 18.9.2009, 11:14
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 18.9.2009, 11:23
Сообщение #5


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


Цитата(Litkevich Yuriy @ 18.9.2009, 11:58) *
почему же, они довольно часто используются, в том числе и тролями.

та вот читаю тут одну книженцию.
Джефри Элджер. С++.
большой шутник могу так сказать.
но эту тему не плохо раскрыл.
использовать можно никто не запрещает, но рекомендует избегать.
в принципе понятно что кода много генериться.
+ из личного опыта могу сказать что разная реализация шаблонов у различных компилятров накладывает некоторые ограничения по переносимости кода.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.9.2009, 11:37
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(kwisp @ 18.9.2009, 15:23) *
но рекомендует избегать.
Цитата(kwisp @ 18.9.2009, 15:23) *
...ограничения по переносимости кода.
из-за этого не рекомендует?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 18.9.2009, 11:42
Сообщение #7


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


Цитата
Увы, такая возможность существует, но пожалуйста, пользуйтесь ею с максимальной осторожностью.
Вложенные шаблоны не только плохо читаются, но и генерируют огромное количество кода при
расширении. Помните, что при использовании шаблона самого верхнего уровня будут расширены все
шаблоны.


Цитата(Litkevich Yuriy @ 18.9.2009, 12:37) *
из-за этого не рекомендует?

я ж написл это из личного опыта.
я работал с mingw коллега с msvc написал мне класс который надо было использовать.
пришлось переписывать кое что из - за шаблонов.

Сообщение отредактировал kwisp - 18.9.2009, 11:43
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 27.12.2024, 10:30