Версия для печати темы
Форум на CrossPlatform.RU _ Qt Общие вопросы _ Проблема с пониманием контейнеров..
Автор: Andrewshkovskii 17.9.2009, 23:18
Есть такой вот хитрый контейнер :
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
Цитата(Andrewshkovskii @ 18.9.2009, 0:18)
discards qualifiers
хорошо кодишь раз впервые видишь.
это ты с квалификатором доступа const поимел проблемы.
const T & QVector::at ( int i ) const
а вообще вложенные шаблоны это жесть.
Автор: Litkevich Yuriy 18.9.2009, 10:58
Цитата(kwisp @ 18.9.2009, 12:59)
а вообще вложенные шаблоны это жесть.
почему же, они довольно часто используются, в том числе и тролями.
Автор: Andrewshkovskii 18.9.2009, 11:10
А, понял, возвращает константную ссылку на вложенный контейнер, по-этому добавить и не могу, надо было по [] обращаться.
Вроде так, и вроде понятно!Спасибо:)
Ну я решил использовать такое представление таблиц..да и QVector < QList < QStandrtItem * > > удобно пользоваться вместе с QStandartModel ..
А кодю я , на сколько я себя знаю, не очень хорошо , учиться и учиться ещё!:)
Автор: kwisp 18.9.2009, 11:23
Цитата(Litkevich Yuriy @ 18.9.2009, 11:58)
почему же, они довольно часто используются, в том числе и тролями.
та вот читаю тут одну книженцию.
Джефри Элджер. С++.
большой шутник могу так сказать.
но эту тему не плохо раскрыл.
использовать можно никто не запрещает, но рекомендует избегать.
в принципе понятно что кода много генериться.
+ из личного опыта могу сказать что разная реализация шаблонов у различных компилятров накладывает некоторые ограничения по переносимости кода.
Автор: Litkevich Yuriy 18.9.2009, 11:37
Цитата(kwisp @ 18.9.2009, 15:23)
но рекомендует избегать.
Цитата(kwisp @ 18.9.2009, 15:23)
...ограничения по переносимости кода.
из-за этого не рекомендует?
Автор: kwisp 18.9.2009, 11:42
Цитата
Увы, такая возможность существует, но пожалуйста, пользуйтесь ею с максимальной осторожностью.
Вложенные шаблоны не только плохо читаются, но и генерируют огромное количество кода при
расширении. Помните, что при использовании шаблона самого верхнего уровня будут расширены все
шаблоны.
Цитата(Litkevich Yuriy @ 18.9.2009, 12:37)
из-за этого не рекомендует?
я ж написл это из личного опыта.
я работал с mingw коллега с msvc написал мне класс который надо было использовать.
пришлось переписывать кое что из - за шаблонов.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)