关于c中的结构体的操作符问题

hhdehh 2002-09-05 10:09:14
我定义的一个结构体
typedef struct
{
char number[4],name[20];
int sex,basic_wage,allowance,bath_haircut_fees;
int water_elec_fees,rent,rest;
}ELEMENTYPE;
但我对其进行比较操作时报错
int locate_seqlist(SEQUENLIST L,ELEMENTYPE x)
{
int i;
for(i=1;i<=L.last;i++)
if(L.elements[i] == x)
return i;
return 0;
}
错:error C2676: binary '==' : 'ELEMENTYPE' does not define this operator or a conversion to a type acceptable to the predefined operator
请问如何对结构体进行比较操作?
...全文
33 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
blh 2002-09-05
  • 打赏
  • 举报
回复
在c中 ==只能支持简单类型数据的比较,像结构里这类复合类型数据,老老实实自己写比较代码,就是在c++中你也要自己写==重载的,呵呵
dsangvei 2002-09-05
  • 打赏
  • 举报
回复
同意楼上。
对,只能同项比较,不然,就没有意义了。
step_by_step 2002-09-05
  • 打赏
  • 举报
回复
你的SEQUENLIST是什么类型?L.elements[i]又是什么类型?x是一个ELEMENTYPE结构体.两者不具有可比性
如果这个程序是c++的话,那么你可以重载operator==()这个操作符,定义自己的判断相等的规则.
Behard 2002-09-05
  • 打赏
  • 举报
回复
结构体不能比较
Tommy 2002-09-05
  • 打赏
  • 举报
回复
C++的话,可以为该结构重载一个==操作符进行比较。纯C的话,只能按楼上说的,定义一个比较函数,显式调用该函数进行比较。

bool operator==(const ELEMENTYPE &lhs, const ELEMENTYPE &rhs)
{
// 逐项比较
}
lanfengjiyue 2002-09-05
  • 打赏
  • 举报
回复
L.elements[i] == x
这句话是什么意思?把一个结构体和int型比较??
两个结构体之间不能直接比较,可以对两个结构体的某一项如L.a和X.b进行比较(两者的类型最好得相同)
hhdehh 2002-09-05
  • 打赏
  • 举报
回复
对不起,漏写了一段
typedef struct
{
ELEMENTYPE elements[MAXLENGTH +1];
int last;
}SEQUENLIST;

70,034

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧