-1

私はMtxそれが行列間のいくつかの計算を行います

Mtx M1(rows1,cols1,1); //instantiate data members and fill the matrix with 1s
Mtx M2(rows2,cols2,2); //instantiate data members and fill the matrix with 2s

Mtx M3(rows3,cols3,0); //instantiate data members and fill the matrix with 0s


M3 += M1; //+= is overloaded - First M3
M3 -= M2; //-= is overloaded - Second M3

ゼロで埋められた最初のM3テイクに追加すると、答えは に割り当てられます。ここでは問題ありません。M3M1M3

問題は2番目M3です!ゼロで埋められたものを減算M3するのではなく、前の演算の結果を使用して から減算しM2ます。

M3値を保持する静的にするにはどうすればよいですか? 静的オブジェクトに関連するものですか?あなたが私の主張を理解してくれることを願っています!

あなたの助けに感謝します...

4

1 に答える 1

5

これは、+=operatorを使用しているためです。左側のオブジェクトに新しい値を割り当て ています。

使用するとき+=は、M3 の値を変更しています。

あなたが欲しいのはこれです:

Mtx M4 = M3 + M1;
Mtx M5 = M3 - M2;

またはさらに良い:

const static Mtx ZERO_MTX(rows3,cols3,0);
Mtx M4 = ZERO_MTX + M1;
Mtx M5 = ZERO_MTX - M2;
于 2012-07-25T05:16:31.597 に答える