QPointers的排序向量
Sorting vector of 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();
}
我正在尝试根据"getSecsTillDeadline()"函数返回的值对QPointers的向量进行排序
但我得到了错误"必须使用".*"或"->*"来调用指向成员函数的指针"。
我哪里错了?错误在预定义的ops.h文件中,所以我可以想象在我自己的代码中有一些东西我可以更改以使其工作
完整的错误是:
C:QtToolsmingw492_32i686-w64-mingw32includec++bitspredefined_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)); }
^
从错误消息中可以看出,custComparFunction
是ToDoItem
类中的非静态成员函数。不能像"普通"非成员函数指针那样使用非静态成员函数。
最简单的解决方案是使函数成为static
成员函数。
相关文章:
- 将结构向量排序为子组
- C++数组与向量排序(在我的情况下,向量比数组慢~2.5倍(无优化))
- 如何在对向量排序后更改索引值?c++
- C++向量排序给出0作为输出
- 将许多向量排序在一起
- 根据一个向量对多个向量排序
- 编译错误向量排序和联合
- C++我自己的函数进行向量排序
- 将字符串的向量排序为日期"yyyymmdd"
- C++ 通过使用旧向量进行预排序来改进向量排序
- C 向量排序 .h .cpp中的单独文件
- 向量排序-c++
- 将向量排序到一个无序映射c++11中
- 向量的向量排序
- c++向量排序方法编译失败,返回预期表达式
- 如何对bitset向量排序
- 向量排序的基础上只有先
- 我如何以相同的方式对两个向量排序,而条件只使用其中一个向量
- 列表排序和结构体向量排序之间的性能差距.c++
- 如何基于第二个字符串对字符串向量的向量排序