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
转载请注明原文地址: https://mac.8miu.com/read-498216.html