Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Yegor от Сентябрь 12, 2012, 18:09



Название: [Решено] Использовать свой класс в QMap
Отправлено: Yegor от Сентябрь 12, 2012, 18:09
Здравствуйте!

Создаю свой класс:

Код:
class cont_reg_model_dt_struct
{
public:
    cont_reg_model_dt_struct(){} //Override of constructor.
    cont_reg_model_dt_struct(const cont_reg_model_dt_struct & other); //Override of copy constructor.
    cont_reg_model_dt_struct &operator=(const cont_reg_model_dt_struct &other); //Override of assignment.
    bool operator<(cont_reg_model_dt_struct other){return TRUE;}  //Override of operator '<'.
};

Затем вставляю его в QMap:

Код:
QMap<int,cont_reg_model_dt_struct> m_MeasLinkageMap2;

Послe чего работаю с QMap:

Код:
QList<cont_reg_model_dt_struct> listVals = m_MeasLinkageMap2.values();
qSort(listVals.begin(), listVals.end());

И при компиляции последней строки (qSort(listVals.begin(), listVals.end())) выводятся ошибки:
c:\Qt\4.8.2\include\QtCore\..\..\src\corelib\tools\qalgorithms.h:161: ошибка: passing 'const ContiniousRegimeModel::cont_reg_model_dt_struct' as 'this' argument of 'bool ContiniousRegimeModel::cont_reg_model_dt_struct::operator<(ContiniousRegimeModel::cont_reg_model_dt_struct)' discards qualifiers

Хотя я метод bool operator<(cont_reg_model_dt_struct other) переопределял.

Подскажите, пожалуйста, в чем проблема.


Название: Re: Использовать свой класс в QMap
Отправлено: GreatSnake от Сентябрь 12, 2012, 18:29
Хотя я метод bool operator<(cont_reg_model_dt_struct other) переопределял.
Переопределяй так:
Код
C++ (Qt)
bool operator<( const cont_reg_model_dt_struct& other ) const;


Название: Re: Использовать свой класс в QMap
Отправлено: Yegor от Сентябрь 12, 2012, 18:38
А теперь все нормально. Спасибо!