c ++赋值运算符

时间:2016-10-25 13:14:25

标签: c++

我正在尝试用c ++实现Matrix类。我在尝试让赋值运算符工作时遇到问题。此时我迷失了。问题是我收到的错误是"矢量下标超出了范围"。如果我从赋值重载运算符中取出this->size = A.size;代码,编译器就不会抱怨。赋值运算符应该返回对Matrix对象的引用。我尝试创建一个新的Matrix对象,但这给了我同样的错误。任何提示?

**Matrix.hpp**

class Matrix
{
private:
    int size;           //size of matrix
    double value;
    std::vector<double> M;
public:
...
}

**Header.cpp**

Matrix& Matrix::operator=(const Matrix& A) 
{
    if (this == &A)
    {
        return *this;
    }
    else
    {
        this->size = A.size; // this is causing problems
        return *this;
    }
}

1 个答案:

答案 0 :(得分:2)

当您将一个矩阵分配给另一个矩阵时,您不仅需要更改大小数据成员,还需要更改其他数据成员,例如调整双精度矢量的大小。