关于RArray排序问题
我查了一些资料,想对RArray数组做一个排序。具体如下:
自己定义了一个T类:
class TNoteData
{
public: // constructor
TNoteData() {};//: iStrength(50){};
public: // members
TBool IsValid() const;
TBuf<200> iContent;
TBuf<20> iTime;
public: // accessors
void SetContent(const TDesC& aContent);
const TDes& Content() const;
void SetTime(TDesC& aTime);
const TDes& Time() const;
void SetTimeNow();
private: //Data
};
在Container.h文件中声明了:
RArray<TNoteData> iNoteList;
在Container.cpp文件中增加了函数:
TInt CompareTime(const TNoteData& note1,const TNoteData& note2)
{
if(note1.iTime>note2.iTime)
return 1;
else if(note1.iTime==note2.iTime)
return 0;
else
return -1;
}
在Container.cpp文件需要调用的函数中增加了:
TLinearOrder<TNoteData> order1(CompareTime);
iNoteList.Sort(order1);
但在编译时提示错误:
C:\WORK\NOTE\SRC\Notecontainer.cpp(237) : error C2664: '__thiscall TLinearOrder<class TNoteData>::TLinearOrder<class TNoteData>(int (__cdecl *)(const class TNoteData &,const class TNoteData &))' : cannot convert parameter 1 from 'int (const class
TNoteData &,const class TNoteData &)' to 'int (__cdecl *)(const class TNoteData &,const class TNoteData &)'
None of the functions with this name in scope match the target type
Error executing cl.exe.
我看了几个例子都是这么写的,为什么我的不行?请教这是什么原因造成的?
[解决办法]
CompareTime是static函数吗?尝试改成static函数。