Вектор сортировки QPointers

Я имею:

std::vector< QPointer<ToDoItem> > items;

и призыв к сортировке:

std::sort(items.begin(), items.end(), custComparFunction)

Я использую пользовательскую функцию сортировки:

bool ToDoList::custComparFunc(QPointer<ToDoItem> i1, QPointer<ToDoItem> i2){
if (i1.data()->getSecsTillDeadline() == i2.data()->getSecsTillDeadline()){
return i1.data()->getMainText() < i2.data()->getMainText();
}
return i1.data()->getSecsTillDeadline() < i2.data()->getSecsTillDeadline();
}

Я пытаюсь отсортировать вектор QPointers на основе значения, возвращаемого функцией ‘getSecsTillDeadline ()’

но я получаю сообщение об ошибке «необходимо использовать«. * »или« -> * »для вызова указателя на функцию-член».

куда я иду не так? ошибка находится в файле предопределенном_ops.h, поэтому я представляю, что в моем собственном коде есть что-то, что я могу изменить, чтобы эта работа работала

полная ошибка:

C:\Qt\Tools\mingw492_32\i686-w64-mingw32\include\c++\bits\predefined_ops.h:121: error: must use '.*' or '->*' to call pointer-to-member function in '((__gnu_cxx::__ops::_Iter_comp_iter<bool (ToDoList::*)(QPointer<ToDoItem>, QPointer<ToDoItem>)>*)this)->__gnu_cxx::__ops::_Iter_comp_iter<bool (ToDoList::*)(QPointer<ToDoItem>, QPointer<ToDoItem>)>::_M_comp (...)', e.g. '(... ->* ((__gnu_cxx::__ops::_Iter_comp_iter<bool (ToDoList::*)(QPointer<ToDoItem>, QPointer<ToDoItem>)>*)this)->__gnu_cxx::__ops::_Iter_comp_iter<bool (ToDoList::*)(QPointer<ToDoItem>, QPointer<ToDoItem>)>::_M_comp) (...)'
{ return bool(_M_comp(*__it1, *__it2)); }
^

0

Решение

Кажется, из сообщения об ошибке, что custComparFunction является нестатической функцией-членом в ToDoItem учебный класс. Вы не можете использовать нестатические функции-члены, такие как «обычные» указатели на функции, не являющиеся членами.

Самое простое решение — сделать функцию static функция-член.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]