Problems: Operator overloading.
I'm trying to overload the operators + and +=, however, I'm getting many errors that I have no idea about.. consider the following code:
Code:
CMatrix CMatrix::operator+ (const CMatrix &mxToAdd)
{
if (m_pdMatrixData == NULL) return NULL;
if (mxToAdd.GetRows() != m_iDimension[0]) return NULL;
if (mxToAdd.GetColumns() != m_iDimension[1]) return NULL;
// Error Checking;
CMatrix mxReturnMatrix(m_iDimension[0], m_iDimension[1]);
for (int i = 0; i < m_iDimension[0]; i++)
{
for (int ii = 0; ii < m_iDimension[1]; ii++)
{
double dSetValue = m_pdMatrixData[i][ii] + mxToAdd.GetSingle(i, ii);
mxReturnMatrix.SetSingle(i, ii, dSetValue);
}
}
return mxReturnMatrix;
};
void CMatrix::operator+= (const CMatrix &mxToAdd)
{
if (m_pdMatrixData == NULL) return;
if (mxToAdd.GetRows() != m_iDimension[0]) return;
if (mxToAdd.GetColumns() != m_iDimension[1]) return;
for (int i = 0; i < m_iDimension[0]; i++)
{
for (int ii = 0; ii < m_iDimension[1]; ii++)
{
m_pdMatrixData[i][ii] += mxToAdd.GetSingle(i, ii);
}
}
}
This is the correct syntax, is it not? Here are the errors:
C:\Documents and Settings\Administrator\Desktop\CMatrix.cpp(247) : error C2664: '__thiscall CMatrix::CMatrix(const class CMatrix &)' : cannot convert parameter 1 from 'const int' to 'const class CMatrix &'
Reason: cannot convert from 'const int' to 'const class CMatrix'
No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Documents and Settings\Administrator\Desktop\CMatrix.cpp(248) : error C2662: 'GetRows' : cannot convert 'this' pointer from 'const class CMatrix' to 'class CMatrix &'
Conversion loses qualifiers
C:\Documents and Settings\Administrator\Desktop\CMatrix.cpp(248) : error C2664: '__thiscall CMatrix::CMatrix(const class CMatrix &)' : cannot convert parameter 1 from 'const int' to 'const class CMatrix &'
Reason: cannot convert from 'const int' to 'const class CMatrix'
No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Documents and Settings\Administrator\Desktop\CMatrix.cpp(249) : error C2662: 'GetColumns' : cannot convert 'this' pointer from 'const class CMatrix' to 'class CMatrix &'
Conversion loses qualifiers
C:\Documents and Settings\Administrator\Desktop\CMatrix.cpp(249) : error C2664: '__thiscall CMatrix::CMatrix(const class CMatrix &)' : cannot convert parameter 1 from 'const int' to 'const class CMatrix &'
Reason: cannot convert from 'const int' to 'const class CMatrix'
No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Documents and Settings\Administrator\Desktop\CMatrix.cpp(258) : error C2662: 'GetSingle' : cannot convert 'this' pointer from 'const class CMatrix' to 'class CMatrix &'
Conversion loses qualifiers
C:\Documents and Settings\Administrator\Desktop\CMatrix.cpp(269) : error C2662: 'GetRows' : cannot convert 'this' pointer from 'const class CMatrix' to 'class CMatrix &'
Conversion loses qualifiers
C:\Documents and Settings\Administrator\Desktop\CMatrix.cpp(270) : error C2662: 'GetColumns' : cannot convert 'this' pointer from 'const class CMatrix' to 'class CMatrix &'
Conversion loses qualifiers
C:\Documents and Settings\Administrator\Desktop\CMatrix.cpp(276) : error C2662: 'GetSingle' : cannot convert 'this' pointer from 'const class CMatrix' to 'class CMatrix &'
Conversion loses qualifiers