這是一個具有存儲2D動態數組的對象「矩陣」的類。我需要能夠添加2個矩陣並將這些元素的總和放入結果矩陣中。 (即:c [1] [1]將等於[1] [1] + b [1] [1])。 但我要實現它的方式如下:重載'='使'+'與矩陣一起工作
Square_Matrix a,b,c;
c = a + b;
這裏是我的兩個重載運營商來說,「=」一期工程的罰款外「+」(所以A = B = C工作得很好,矩陣得到複製)。不幸的是,我沒有在我的IDE上發現錯誤,程序只是關閉並且顯示「Square_Matrix已停止工作」。我怎樣才能解決這個問題?
我也不太確定我是否正確實施了我的'+',有人說「返回*這個」不會做任何事情。
//.h file
Square_Matrix& operator=(const Square_Matrix& Par2);
Square_Matrix& operator+(const Square_Matrix& Par3);
//.cpp file
Square_Matrix& Square_Matrix::operator=(const Square_Matrix& Par2){
if (size != Par2.size){
cout << "Matrices are of different size" << endl;
} else {
for (int i = 0; i < size; i++){
for (int j = 0; j < size; j++){
matrix[i][j] = Par2.matrix[i][j];
}
}
}
}
Square_Matrix& Square_Matrix::operator +(const Square_Matrix& Par3){
Square_Matrix result;
result.Set_Size(Par3.size);
for (int i = 0; i < Par3.size; i++){
for (int j = 0; j < Par3.size; j++){
result.matrix[i][j] = Par3.matrix[i][j]+matrix[i][j];
}
}
return *this;
}
您的'operator ='應該以'return * this;'結尾。你的'operator +'應該以'return result;'結尾,並且不應該返回一個引用。 – Brian
@remyabel:從'operator +'?這不是不返回參考的原因。你不返回一個引用,因爲'operator +'應該爲該函數創建一個新的對象。如果你回覆了這個參考,這將是一個懸而未決的參考。 –
另請參閱[這裏](http://stackoverflow.com/a/4421719/509868)(尋找'operator +'和'operator + ='的正確定義) – anatolyg