我有:
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();
}
我正在尝试根据“getSecsTillDeadline()”函数返回的值对 QPointers 向量进行排序
但我收到错误'必须使用'。*'或'-> *'来调用指向成员函数的指针'。
我哪里错了?错误在文件predefined_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)); }
^