报错C2678
在使用“==” 运算符比较结构体时会出现报错: 二进制“operator”: 没有找到接受“T”类型的左操作数的运算符(或没有可接受的转换)
我的结构体定义如下:
struct Vex
{
char Code[StrMAX];
char Name[StrMAX];
};
struct Edge
{
Vex vex1;
Vex vex2;
int weight;
};
解决方法
在结构体中重载运算符”==“:
struct Vex
{
char Code[StrMAX];
char Name[StrMAX];
bool operator==(Vex rhs)
{
return(strcmp(Code , rhs.Code)==0) && (strcmp(Name , rhs.Name)==0);
}
};
struct Edge
{
Vex vex1;
Vex vex2;
int weight;
bool operator==(Edge rhs)
{
return(strcmp(vex1.Code, rhs.vex1.Code) == 0) && (strcmp(vex2.Code, rhs.vex2.Code) == 0);
}
};
问题解决
开发环境:vs2017