私は自分でMatrixクラスを作成しました。しかし、+演算子をオーバーロードすると面白い問題があります。面白いC++演算子のオーバーロードの問題
Matrix Matrix::operator+ (Matrix& operand)
{
if(row_size == operand.row_size && col_size == operand.col_size)
{
Matrix temp(row_size, col_size);
for(int i = 0; i < col_size; i ++)
{
for(int j = 0; j < row_size; j ++)
{
temp[i][j] = data_list[i][j] + operand.data_list[i][j];
}
}
return temp;
}
else
throw Error::Matrix_error(0);
}
私は主な機能上の
matrix + matrix2;
を行うと、プログラムが無限ループに入っているように、それはそう。だから、私はちょうどそれをデバッグし、コードがreturn temp;
の部分で停止することを知った。 オペレータの戻り値の型がMatrix
なので、なぜこの関数がtemp
を返すことができないのかわかりません。
さらに、このコードは、RELEASEモード(Visual Studio 2010)でコンパイルすると完全に機能します。しかし、DEBUGモードでコンパイルすると動作しません。
'Matrix'のcopy-ctor(または割り当て)はどのように見えますか? – Nim
「返却時のコード**の停止**」とはどういう意味ですか?それがクラッシュすることを意味しますか? –
行列のスペースを動的に割り当て、行列へのポインタを返そうとします。 – SpeedBirdNine