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

时间:2017-08-28 03:55:34

标签: c++ class object

我们开始涵盖对象和类。我有三个文件: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();
};

1 个答案:

答案 0 :(得分:-1)

在主程序中,操作数的类型为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运算符。