//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;
答案 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;
}