c++结构体使用"=="运算符时报错(C2678)

mac2024-12-01  39

c++运算符的重载: 结构体使用"=="运算符比较时报错(C2678)

报错C2678解决方法

报错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

最新回复(0)