Operator = function和add函数似乎不能共存

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)

Man*_*rse 5

您遇到的问题是您从值返回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=.)