私はある種の行列ライブラリを書いていますので、演算子のオーバーロードを使って行列にoperator +
を与えました。このような感じです。演算子のオーバーロードC++、(+、 - 、*、/ etc.)コピー、置換、貼り付けよりスマートな方法がありますか?
friend matrix<T, size_x, size_y> operator + (const matrix<T, size_x, size_y> & Input_1, const matrix<T, size_x, size_y> & Input_2){
matrix<T, size_x, size_y> Output;
for (int i=0; i<size_x; i++){
for (int j=0; j<size_y; j++){
Output.value[i][j]=Input_1.value[i][j]+Input_2.value[i][j];
}
}
return Output;
}
これまでのところ、テストしたとおりに動作します。今、私は - 、/、*演算子も追加したいのですが、それらはすべて同じように動作します。もちろん、コピー、置き換え、貼り付けができます。しかし、これは可読性と保守性に悪いです。私はそれにグーグルの概念の名前を知らないので、よりスマートなソリューションとおそらく概念はありますか?私はちょうど単一の演算子を過負荷にする方法を見つけた。
+、 - 、*、および/(それぞれ、+と - と同じネストされたループではない行列乗算サウンドですが)のコールバック関数を持つネストされたforループの1つの断片が必要です。しかし、依然としてオーバーロードを分ける必要があります。コードの行数、コンパイル時間と実行時間の最適化(もしあれば)のために、私はコピーと貼り付けと修正を強くお勧めします。 –
誰もそれを期待していないので、私はもう少し注意して*と/そして同じことをするでしょう。行列の乗算はそのようには機能しません。 @Ken Cheung。 – UKMonkey
ありがとうございました。あなたは私の研究のために新しいポイントを与えました。 Greetings Markus – Markus