C++ 重载运算符+;和分段故障C++;

C++ 重载运算符+;和分段故障C++;,c++,C++,所以我设计了一个程序,用int向量的向量创建一个矩阵,我试图重载+以便我可以把两个矩阵加在一起。这是我第一次让操作员超载,我有点麻烦。我实现了operator+,当我使用tester类运行它时,我得到了一个分段错误,它没有告诉我在哪里。所以我加了cout,看看哪里出了问题;它发生在我调用matrix2=matrix1+matrix2时。我不知道这是什么意思,也不知道我做错了什么 Matrix.cpp(其中重载成员函数为): 矩阵::运算符+(矩阵m){ 矢量mRow; 向量纽罗; 矩阵newM(

所以我设计了一个程序,用int向量的向量创建一个矩阵,我试图重载+以便我可以把两个矩阵加在一起。这是我第一次让操作员超载,我有点麻烦。我实现了operator+,当我使用tester类运行它时,我得到了一个分段错误,它没有告诉我在哪里。所以我加了cout,看看哪里出了问题;它发生在我调用matrix2=matrix1+matrix2时。我不知道这是什么意思,也不知道我做错了什么

Matrix.cpp(其中重载成员函数为):

矩阵::运算符+(矩阵m){
矢量mRow;
向量纽罗;
矩阵newM(行、列);

for(int i=0;ii在加法的内部循环中发现一个错误。for循环初始化
j
,但应该从
j=column-1
开始。这将在访问
mRow[j]
时导致segfault。此外,条件也应该更改,为
for(j=column-1;j>-j)

for(int j=column;jAlso,newRow似乎只是为每一行追加。因此,如果设置了每一行,它们将变得越来越大。(此外,您几乎肯定希望使用常量引用,而不是将参数复制到+)。或者利用运算符+的参数将是一个副本的事实,并在添加到它之后返回它。
for()for()m[i][j]+=this[i][j];
并且您确信在tester类中add、matrix和m2具有相同的行数和列数?并且您确定已正确定义运算符=()?@perh在将newRow添加到metrix@Christophe你我确信它的大小和我硬编码的大小一样,而且不是为了调试程序。但是,这不会导致崩溃,因为内部循环总是被完全跳过(i=正;i
Matrix Matrix::operator+(Matrix m){
    vector<int> mRow;
    vector<int> newRow;
    Matrix newM(row, column);
    for(int i =0; i<row; i++){
        mRow = m.getRow(i);
        for (int j=column; j<0; j--){
            newRow.push_back(matrix[i][j]+mRow[j]);
        }
        newM.setRow(newRow,i);  
    }
    return newM;
}
Matrix m2(rowVec.size(), colVec.size());
    rowVec = matrix.getRow(1);
    cout <<"Made new matrix" <<endl;
    for (int i=0; i <= row-1; i++){
        cout <<"for l" <<endl;
        m2.setRow(rowVec,i);
    }

    cout <<"for done" <<endl;
    Matrix add(row,column); 
    add = matrix + m2; #Program stops here
    cout <<"added" <<endl;
    add.output();