Russian Qt Forum

Qt => Общие вопросы => Тема начата: Qbos от Декабрь 05, 2010, 23:36



Название: qStableSort
Отправлено: Qbos от Декабрь 05, 2010, 23:36
Проблема с сортировкой QList.
Ошибка: "no matching function call to 'qStableSort..."

Код этой строки у меня такой:
Код:
qStableSort(eventsQueue.begin(),eventsQueue.end(),sortASC);

Код сортировщика LessThan:
Код:
bool myClass::sortASC(Event* first, Event* second)
{
return (first->Time < second->Time)
}

Time -- это свойство объекта Event. А eventsQueue -- это QList<Event*>

Помогите, пожалуйста, разобраться с ошибкой..


Название: Re: qStableSort
Отправлено: UVV от Декабрь 06, 2010, 00:28
Код:
qStableSort(eventsQueue.begin(), eventsQueue.end(), myClass::sortASC);


Название: Re: qStableSort
Отправлено: Qbos от Декабрь 06, 2010, 00:34
Код:
qStableSort(eventsQueue.begin(), eventsQueue.end(), myClass::sortASC);

не помогло  :-[


Название: Re: qStableSort
Отправлено: UVV от Декабрь 06, 2010, 00:39
Значит функции нет в пределах видимости.


Название: Re: qStableSort
Отправлено: zenden от Декабрь 06, 2010, 01:10
если я не ошибаюсь, функцию надо сделать static


Название: Re: qStableSort
Отправлено: alexman от Декабрь 06, 2010, 10:41
Сделай глобальной, или переопередели operator<.


Название: Re: qStableSort
Отправлено: Qbos от Декабрь 06, 2010, 11:20
Проблема, вроде, решилась путем объявления параметров функции sortASC как const.

Странно еще то, что
Цитировать
Значит функции нет в пределах видимости.

а метод sortASC находился в том же классе, что и метод, в котором вызывалась функция qStableSort с параметром sortASC. Пришлось вывести функцию за пределы данного класса...


Название: Re: qStableSort
Отправлено: UVV от Декабрь 06, 2010, 14:02
А объявлена функция где была? В public?
У меня она объявлена static'ом в public'e и всё работает.


Название: Re: qStableSort
Отправлено: Qbos от Декабрь 06, 2010, 14:19
А объявлена функция где была? В public?
У меня она объявлена static'ом в public'e и всё работает.

да, она у меня в паблике была...