先介绍一下函数对象
下面直接定义一个用于比较的函数对象类
///file Compare.h
#pragma once
class Person;
enum EnumCompType
{
ASC,
DESC,
};
enum EnumCompField
{
ECF_Name,
ECF_Phone,
};
class Compare
{
public:
Compare(EnumCompType etype, EnumCompField eField);
bool operator() (const Person *, const Person *);
private:
EnumCompType m_eCompType;
EnumCompField m_eCompField;
};
///file Compare.cpp
#include "Compare.h"
#include "Person.h"
#include <QLocale>
#include <QCollator>
Compare::Compare(EnumCompType etype, EnumCompField eField)
:m_eCompType(etype)
,m_eCompField(eField)
{
}
bool Compare::operator()(const Person *pP1, const Person *pP2)
{
QLocale loc(QLocale::Chinese, QLocale::China);
QCollator qcol(l