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

c++运算符的重载: 结构体使用"=="运算符比较时报错(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

发布了11 篇原创文章 · 获赞 11 · 访问量 800

猜你喜欢

转载自blog.csdn.net/weixin_45458577/article/details/102848341