Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从操作员+到操作员的更改内容-_C++_Operator Overloading_Bigint - Fatal编程技术网

C++ 从操作员+到操作员的更改内容-

C++ 从操作员+到操作员的更改内容-,c++,operator-overloading,bigint,C++,Operator Overloading,Bigint,所以对于一个BigInt问题,我想添加一个操作符-,我将如何更改我的代码?这只是为了练习,但我在寻找改变的解决方案时遇到了一些问题 这是我的接线员+: int carry = 0; int sum; BigInt result; list<int>::reverse_iterator rit1 = number.rbegin(); list<int>::reverse_iterator rit2 = operand.number.rbegi

所以对于一个BigInt问题,我想添加一个操作符-,我将如何更改我的代码?这只是为了练习,但我在寻找改变的解决方案时遇到了一些问题

这是我的接线员+:

int carry = 0;
    int sum;
    BigInt result;
    list<int>::reverse_iterator rit1 = number.rbegin();
    list<int>::reverse_iterator rit2 = operand.number.rbegin();
    while ( (rit1 != number.rend()) || (rit2 != operand.number.rend()) )
    {
        sum = 0;

        if (rit1 != number.rend())
        {
            sum += *rit1;
            rit1++;
        }

        if (rit2 != operand.number.rend())
        {
            sum += *rit2;
            rit2++;
        }

        sum += carry;
        result.number.push_front(sum % 10);
        carry = sum / 10;
    }

    if (carry > 0)
        result.number.push_front(carry);

    return result;

为什么不构建操作符呢?就x+-y而言。。。?如果您还没有求反运算符,那么添加它似乎很好,而且更容易。然后,您需要修复运算符+,以处理负数,但如果不能,它对任何人都没有多大用处。

包括原型和终止支架如何?总之,代码墙不错。我认为OP在声明运算符时没有问题。。它被标记为BigInt,因此他们对BigInt进行加法运算,并想知道如何进行减法运算。@CantChooseServerNames,您是对的。为什么不构建运算符-以x+-y的形式。。。?如果您还没有求反运算符,那么添加它似乎很好,而且更容易。然后你需要修正你的操作符+来处理负数,但如果它不能,对任何人都没有多大用处。@TonyD,我没想到这一点。非常感谢。我现在让它工作了。如果你提供答案,我会接受的。