KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a Matrix class and it has overloaded * operators for scalar and matrix multiplications. 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; } // ... I can multiply a matrix object with a scalar from right side without any problem: 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 But, how do I multiply it from left side same way? Matrix<double> X(3, 3, /* ... */); Matrix<double> Y; Y = 10.0 * X; In arithmetic, it is a common notation to write constants on the left side when doing multiplication. I would like to obey this rule to make my code more readable. Is it possible to implement this in C++? If it is possible, how do I modify the class method in my code?
Tags (comma-separated)
Save Edits
Cancel