gpt4 book ai didi

qt - 为什么 qSort() 不起作用?

转载 作者:行者123 更新时间:2023-12-04 13:17:26 63 4
gpt4 key购买 nike

好的,我正在尝试对我自己的 TvShow 类列表进行排序,以按照用户决定的顺序显示 TvShow 列表。这是我到目前为止在阅读 qSort() 文档后想到的。

bool MainWindow::compareShowsByName(TvShow* showA, TvShow* showB)
{
return showA->getShowName() < showB->getShowName();
}

QList<TvShow*> MainWindow::orderShowsByName()
{
QList<TvShow*> orderedShowList = appSettings.TvShows;
qSort(orderedShowList.begin(), orderedShowList.end(), compareShowsByName);
return orderedShowList;
}

当然,这会失败并出现以下错误:
../EpisodeNext/mainwindow.cpp: In member function 'QList<TvShow*> MainWindow::orderShowsByName()':
../EpisodeNext/mainwindow.cpp:192: error: no matching function for call to 'qSort(QList<TvShow*>::iterator, QList<TvShow*>::iterator, <unresolved overloaded function type>)'
../../QtSDK/Simulator/Qt/gcc/include/QtCore/qalgorithms.h:184: note: candidates are: void qSort(RandomAccessIterator, RandomAccessIterator, LessThan) [with RandomAccessIterator = QList<TvShow*>::iterator, LessThan = bool (MainWindow::*)(TvShow*, TvShow*)]
../EpisodeNext/mainwindow.cpp: In member function 'QList<TvShow*> MainWindow::orderShowsByAirDate()':
../EpisodeNext/mainwindow.cpp:199: error: no matching function for call to 'qSort(QList<TvShow*>::iterator, QList<TvShow*>::iterator, <unresolved overloaded function type>)'
../../QtSDK/Simulator/Qt/gcc/include/QtCore/qalgorithms.h:184: note: candidates are: void qSort(RandomAccessIterator, RandomAccessIterator, LessThan) [with RandomAccessIterator = QList<TvShow*>::iterator, LessThan = bool (MainWindow::*)(TvShow*, TvShow*)]
make: *** [mainwindow.o] Error 1

知道有什么问题吗?我正在使用最新版本的 Qt SDK(Qt SDK 1.1 RC with Qt 4.7.3)

提前致谢!

最佳答案

Robin,除了需要在 MainWindow.cpp 文件中将“compareShowsByName”函数声明为全局函数之外,您所做的一切都是正确的。所以像这样的代码可以编译并运行良好:

bool compareShowsByName(TvShow* showA, TvShow* showB)
{
return showA->getShowName() < showB->getShowName();
}

QList<TvShow*> MainWindow::orderShowsByName()
{
QList<TvShow*> orderedShowList = appSettings.TvShows;
qSort(orderedShowList.begin(), orderedShowList.end(), compareShowsByName);
return orderedShowList;
}

注意:您不一定需要在 MainWindow.h 中声明“compareShowsByName”,除非您想在 MainWindow 之外的某处(在您的应用程序的任何其他部分)使用它。但是,如果您仍想将“compareShowsByName”声明为 MainWindow 类的成员函数,只需传递 pointer to a member-function正确。

希望有帮助。

关于qt - 为什么 qSort() 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5612906/

63 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com