crossplatform.ru

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


  Ответ в qSort и предикат сравнения ( LessThan lessThan )
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Andrewshkovskii Дата 15.11.2009, 18:53
  Спасибо, сказалась моя невнимательность:)
DEADHUNT Дата 15.11.2009, 18:41
 
static bool cmp(const Cluster *c1, const Cluster *c2){return c1->value() > c2->value(); }

т.к. QVector содержит указатели на Cluster.
Elfinit Дата 15.11.2009, 18:38
  1. сделай эту функцию static и передавай в qSort как Classname::cmp
2. ты сортируешь вектор указателей, а твоя функция сравнения принимает параметры-ссылки. сделай их тоже указателями.
Andrewshkovskii Дата 15.11.2009, 18:28
  есть класс, в нем есть структура :
private :
        struct Cluster
         {
           private :
            int value_;
            QSet<int> numbersOfItems_;
            QPoint centerPos;
            bool isPainted;
           public :
            Cluster();
            Cluster(int item1 ,int item2, int nValue);
            Cluster(int item1, int nValue);
            void setValue(int newValue);
            int value(){ return value_; }
            QSet<int> &numbersOfItems() {return numbersOfItems_;}
            void setPainted(bool is);
            QString toString(QStringList * lst);
            void append(Cluster * nClust);
          };


и функция для сравнения :
 public :
        bool cmp(const Cluster&  c1, const Cluster& c2){return c1.value() > c2.value();}


и необходимо отсортировать вектор такой вот :
QVector <Cluster * > bufvec;

По возрастанию..
вот так вот пробую :
        
qSort(bufvec.begin(),bufvec.end(), cmp);

и получаю два :
Цитата
error: passing 'const Model::Cluster' as 'this' argument of 'int Model::Cluster::value()' discards qualifiers


Неужели надо будет в отдельный файл функцию запихивать?..
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 16.4.2024, 14:43