私はMatrix
クラスを持っていて、スカラーと行列の乗算には*
演算子がオーバーロードされています。左辺から定数を持つオブジェクトを掛ける
template <class T> class Matrix
{
public:
// ...
Matrix operator*(T scalar) const;
// ...
}
// ...
template <class T>
Matrix<T> Matrix<T>::operator*(T RightScalar) const
{
Matrix<T> ResultMatrix(m_unRowSize, m_unColSize);
for (uint64_t i=0; i<m_unRowSize; i++)
{
for (uint64_t j=0; j<m_unColSize; j++)
{
ResultMatrix(i, j) = TheMatrix[m_unColSize * i + j] * RightScalar;
}
}
return ResultMatrix;
}
// ...
私は何の問題もなく、右サイドからのスカラと行列オブジェクトを掛けることができます。
Matrix<double> X(3, 3, /* ... */); // Define a 3x3 matrix and initialize its contents
Matrix<double> Y; // Define an output matrix
Y = X * 10.0; // Do the linear operation
しかしが、どのように私は、左側と同じ方法から、それを掛けていますか?
Matrix<double> X(3, 3, /* ... */);
Matrix<double> Y;
Y = 10.0 * X;
算術演算では、乗算を行うときに左側に定数を書き込むのが一般的な表記法です。コードを読みやすくするためにこのルールに従いたいと思います。
これをC++で実装することはできますか?
可能であれば、コード内のクラスメソッドを変更するにはどうすればよいですか?
クラスメソッドではありません。 – Kimi