将对象作为参数传递,没有可行的重载"="

Passing objects as parameters, no viable overloaded '='

本文关键字:重载 对象 参数传递      更新时间:2023-10-16

我们开始介绍对象和类。我有三个文件:bigNumberTest.cpp,bigNumber.cpp和bigNumber.h。

我有一个错误,说"没有可行的重载'='"在我的主语中:

bigNumberTest.cpp(provided by instructor)
int main(){
//code
sum = num1.addBig(num2);
//code
}

当我在我的 bigNumber.cpp 文件中定义函数时,我收到第二个错误:

num[i] = num[i] + num2[i];

这里的错误是:"类型'bigNumber'不提供下标运算符。

bigNumber.cpp
void bigNumber::addBig(bigNumber num2){
//sums the two arrays
for (int i = 0; i < MAX_DIGITS; i++){
num[i] = num[i] + num2[i];
}
}

整个代码尚未完全完成,但我想解决这些问题。我提供了我认为只是必要的代码,但如果您需要更多信息,请告诉我。我还没有完全理解对象和类。

bigNumber.h file:
class bigNumber{
private:
const int MAX_DIGITS = 100;
int num[100];
public:
void readBig();
void addBig(bigNumber);
void printBig();
};

在主程序中,操作数的类型为bigNumber。编译器不知道如何对它们执行"="操作。你必须自己写。重载支持数据类型的"="符号。

它应该是这样的:

void bigNumber::operator=(bigNumber rhs)
{
for(int i=0 ; i<MAX_DIGITS ; i++)
{
this->num[i] = rhs.num[i];
}
}

对于第二个错误,num2只是一个变量。num2对象中有一个变量num

因此,实际代码必须是:

bigNumber.cpp
void bigNumber::addBig(bigNumber num2){
//sums the two arrays
for (int i = 0; i < MAX_DIGITS; i++){
this->num[i] = this->num[i] + num2.num[i];
}
}

尝试了解有关this运算符的更多信息。