qt中的qSort()函数问题,初学者求解答,急问
这段代码是一个简单的qSort()简单使用实例:
#include <QtCore/QCoreApplication>
#include <QList>
#include <QTextStream>
#include <QStringList>
bool caseInsensitiveLessThan(const QString &s1, const QString &s2);
void SortList(QList<QString>& qlist);
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QList<QString> list;
list.push_back("g1233");
list.push_back("g1333");
list.push_back("g0933");
SortList(list);
return a.exec();
}
bool caseInsensitiveLessThan(const QString &s1, const QString &s2)
{
return s1.toLower() < s2.toLower();
}
void SortList( QList<QString>& qlist)
{
qSort(qlist.begin(), qlist.end(), caseInsensitiveLessThan);
}
这个程序运行没问题,现在我把SortList改成一个类
SortList.h
#include <QList>
#include <QString>
class SortList
{
public:
SortList();
~SortList();
public:
bool caseInsensitiveLessThan( const QString &s1, const QString &s2 );
void sortList(QList<QString>& qlist);
};
SortList.cpp
#include "SortList.h"
bool SortList::caseInsensitiveLessThan( const QString &s1, const QString &s2 )
{
return s1.toLower() < s2.toLower();
}
void SortList::sortList( QList<QString>& qlist )
{
qSort(qlist.begin(), qlist.end(), &sort::caseInsensitiveLessThan);
}
编译类会报错,报错如下:
1>c:\qt\4.6.2\include\qtcore\../../src/corelib/tools/qalgorithms.h(351) : error C2064: 项不会计算为接受 2 个参数的函数
1> c:\qt\4.6.2\include\qtcore\../../src/corelib/tools/qalgorithms.h(187): 参见对正在编译的函数 模板 实例化“void QAlgorithmsPrivate::qSortHelper<RandomAccessIterator,T,LessThan>(RandomAccessIterator,RandomAccessIterator,const T &,LessThan)”的引用
1> with
1> [
1> RandomAccessIterator=QList<QString>::iterator,
1> T=QString,
1> LessThan=bool (__thiscall CodeEngine::* )(const QString &,const QString &)
1> ]
1> .\CodeEngine.cpp(931): 参见对正在编译的函数 模板 实例化“void qSort<QList<T>::iterator,bool(__thiscall CodeEngine::* )(const QString &,const QString &)>(RandomAccessIterator,RandomAccessIterator,LessThan)”的引用
1> with
1> [
1> T=QString,
1> RandomAccessIterator=QList<QString>::iterator,
1> LessThan=bool (__thiscall CodeEngine::* )(const QString &,const QString &)
1> ]
1>c:\qt\4.6.2\include\qtcore\../../src/corelib/tools/qalgorithms.h(356) : error C2064: 项不会计算为接受 2 个参数的函数
1>c:\qt\4.6.2\include\qtcore\../../src/corelib/tools/qalgorithms.h(358) : error C2064: 项不会计算为接受 2 个参数的函数
1>c:\qt\4.6.2\include\qtcore\../../src/corelib/tools/qalgorithms.h(366) : error C2064: 项不会计算为接受 2 个参数的函数
求问这是为什么啊??????