से निरंतर ऑब्जेक्ट को गुणा करना मेरे पास 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;
अंकगणित में, गुणा करने के दौरान बाएं तरफ स्थिरांक लिखना एक आम धारणा है। मैं अपने कोड को और अधिक पठनीय बनाने के लिए इस नियम का पालन करना चाहता हूं।
क्या इसे सी ++ में कार्यान्वित करना संभव है?
यदि यह संभव है, तो मैं अपने कोड में कक्षा विधि को कैसे संशोधित करूं?
यह संभव है, लेकिन कक्षा विधि के साथ नहीं। – Kimi