【问题标题】:Invalid operands to binary expression (while comparing object to 0)二进制表达式的无效操作数(将对象与 0 进行比较时)
【发布时间】:2019-02-09 17:55:36
【问题描述】:
//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:错误:二进制表达式的操作数无效 ('bigint' 和 'int') 断言(双 == 0); ~~ ^ ~
bigint bi;

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

【问题讨论】:

  • 请贴出整个代码。否则,错误很明显:您似乎没有将bigintint 进行比较的运算符,也没有转换运算符(使用代码中显示的运算符)。
  • 'bigint' and 'int' 好吧,实现一个bool bigint:operator==(int other) 方法...

标签: c++


【解决方案1】:

您的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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多