关于结构体运算符重载
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)))
//试试看