定义结构体
struct SData
{
int num;
char sName[20];
};
CList <SData,SData>m_list; //定义链表类的对象
SData data;//定义结构体对象
m_list.Find(data); //出现错误
提示的错误如下:
c:\program files\microsoft visual studio\vc98\mfc\include\afxtempl.h(122) : error C2678: binary '==' : no operator defined which takes a left-hand operand of type 'const struct SData' (or there is no acceptable conversion)
c:\program files\microsoft visual studio\vc98\mfc\include\afxtempl.h(1036) : see reference to function template instantiation 'int __stdcall CompareElements(const struct SData *,const struct SData *)' being compiled
Error executing cl.exe.
解决方案:
在结构体SData中重载operator ==
struct SData
{
int num;
char sName[20];
BOOL operator==(const SData& data)const //两个const都不能省略
{
if((this->num=data.num)&&(!strcmp(this->sName,data.sName))
return TRUE;
else
return FALSE;
}
};