对二进制表达式无效的操作数(将对象与0进行比较时)

时间:2019-02-09 17:55:36

标签: c++

//Default Constructor
bigint::bigint() {
    for (int i = 0; i < CAPACITY; ++i)
        digits[i] = 0;
}

//Overloaded operator==
bool bigint::operator==(const bigint& rhs) const {
    for (int i = 0; i < CAPACITY; ++i)
        if (digits[i] == rhs.digits[i])
            return true;
    return false;
}

在编译程序时给出以下错误消息。我花了几个小时来搜索和进行更改,但没有成功。

test_default_ctor.cpp:18:15: error: invalid operands to binary expression
      ('bigint' and 'int')
    assert(bi == 0);
           ~~ ^  ~
bigint bi;

// Verify
assert(bi == 0);
std::cout << "0 == " << bi << std::endl;

1 个答案:

答案 0 :(得分:0)

您的bigint类很可能会丢失:

  • int作为输入的构造函数。

  • 一个以operator==作为输入的int

添加其中任何一个(最好是构造函数)将解决该错误。

此外,您显示的operator==实现错误。如果任何一位数字匹配,它将返回true,即使所有其他数字都不匹配。您需要先比较所有个数字,然后再返回true,例如:

bool bigint::operator==(const bigint& rhs) const {
    for (int i = 0; i < CAPACITY; ++i)
        if (digits[i] != rhs.digits[i])
            return false;
    return true;
}