use*_*783 1 c++ class operator-overloading
我的两个功能都有问题.我有operator =方法和add方法.它们可以自行工作,因为我只能在一次编译中使用其中一个.例如,我需要注释掉add函数以使operator =方法起作用,反之亦然.我得到的错误10no match for 'operator=' in 'c = (&a)->HUGE_INT::add(((HUGE_INT&)(&b)))'
HUGE_INT HUGE_INT::operator=(HUGE_INT &orig)
{
//code
return *this;
}
HUGE_INT HUGE_INT::add(HUGE_INT &a)
{
//code
return object;
}
//client
HUGE_INT a(9999999),b(1111),c,d;
c = a.add(b);
d = a;
Run Code Online (Sandbox Code Playgroud)
您遇到的问题是您从值返回add,并operator=通过非const引用获取参数.
返回的临时对象add是一个右值,因此不能绑定到非const引用.
除非你做了一些非常奇怪的事情,否则你可能想要operator=通过引用const 来改变它的参数:
HUGE_INT& HUGE_INT::operator=(HUGE_INT const& orig)
{
//code
return *this;
}
Run Code Online (Sandbox Code Playgroud)
(我也将其更改为引用返回,因为这是标准签名operator=.)
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |