首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于构造体运算符重载

2013-07-04 
关于结构体运算符重载struct testa{int a}struct testb{testa b}int main(){testb thebtesta theath

关于结构体运算符重载
struct testa
{
int a;
};
struct testb
{
testa b;
};
int main()
{
testb theb;
testa thea;
thea.a=1;
theb.b=thea;
cout<<theb.b.a;
if(theb.b==thea)//这里会编译报错,怎么处理这种情况
cout<<"ok"<<endl;
return 0;
}

如何解决这个报错,要重载运算符么,貌似结构体自带=的重载啊,难道要重载==,==应该不是能重载的符号啊,难道还要单独写个函数么做这种判定么。。。
[解决办法]
是的,要重载,=是系统默认的(粗略的,只能这么说),==是可以重载的。
[解决办法]
直接把结构体里面的每个元素都比较一次:theb.b.a == thea.a
[解决办法]

if (!memcmp((const void *)&(theb.b),(const void *)&thea,sizeof(thea)))
//试试看 

热点排行