将对象作为参数传递,没有可行的重载"="
Passing objects as parameters, no viable overloaded '='
我们开始介绍对象和类。我有三个文件: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
运算符的更多信息。
相关文章:
- 你能重载对象变量名本身返回的内容吗
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 为什么我可以在不重载 "=" 运算符的情况下将一个对象分配给另一个对象?
- 运算符重载 += 添加新对象
- 有没有办法将重载的类函数绑定到函数对象?
- 使用操作重载对象重新分配对象
- C++内联运算符重载中,请参阅当前对象
- C++运算符重载做双 * 对象
- 尝试重载输出运算符时,我无法遍历对象向量
- 我重载了 << 和 = 运算符。为什么当我将一个对象分配给另一个对象并尝试打印它时,我会被打印出来?
- 重载加法运算符(使用函数向对象添加字符串)
- 临时对象上的运算符重载
- 如何使用运算符+重载函数正确返回对象?
- 对象内部对象的重载功能
- 重载对象成员的比较运算符
- 重载对象前面带有数字的运算符+(int)
- 变量参数列表如何在C++中处理重载对象
- 我尝试重载对象的 >> 运算符,但出现一些错误。为什么?C++
- 运算符重载-对象的类型限定符与成员函数C++不兼容