出于某种原因,每当我尝试使用double数组在c ++中重载operator =(const myArray& rhs)时我的程序就会崩溃

时间:2017-10-20 17:35:03

标签: c++ operator-overloading operators

我试图重载运算符=。我可以编译它但是每当我运行程序时,如果我只有A1 = A2就可以了,但是当我的A1 = A2 = A3时,我得到下一条失败消息:

"此应用程序已请求Runtime以不寻常的方式终止它。 有关更多信息,请联系应用程序的支持团队。 在抛出' std :: bad_array_new_length'的实例后终止调用   what():std :: bad_array_new_length"。

我正在附加我的.cpp文件。 我是新来的,所以如果还有其他任何你想要我发送的内容,请告诉我。

我的.cpp文件(包括复制构造函数):

#include <cmath>
#include "Array.h"
myArray::myArray()
{
    size = 0;
    data = new double[size];
    for (int i = 0; i < size; i++)
    {
        data[i] = i;
    }
}
myArray::myArray(const myArray& orig) {
setSize(orig.getSize());
data = new double [getSize()];
for (int i = 0; i < getSize(); i++) {
    setData(i, orig.getData(i));
}
}
myArray myArray::operator=(const myArray& rhs)
{
    delete [] data;
setSize(rhs.getSize());
data = new double [getSize()];
for (int i = 0; i < size; i++)
{
    setData(i,rhs.getData(i));
}
}

0 个答案:

没有答案