В моем классе есть часть для матричных операций:
class Matrix
{
private:
std::vector < std::vector <T> > items;
const unsigned int rows_count;
const unsigned int columns_count;
public:
Matrix ( unsigned int m_rows, unsigned int m_columns);
Matrix ( const Matrix <T> &M );
template <typename U>
Matrix <T> & operator = ( const Matrix <U> &M );
template <typename U>
bool operator == ( const Matrix <U> &M ) const;
template <typename U>
bool operator != ( const Matrix <U> &M ) const ;
template <typename U>
Matrix <T> operator + ( const Matrix <U> &M ) const
...
};
, где
template <typename T>
template <typename U>
Matrix <U> Matrix <T> ::operator + ( const Matrix <U> &M ) const
{
Matrix <U> C ( M );
for ( unsigned int i = 0; i < rows_count; i++ )
{
for ( unsigned int j = 0; j < M.getColumnsCount(); j++ )
{
C ( i, j ) = items[i][j] + M.items[i][j];
}
}
return C;
}
template<class T>
Matrix <T> :: Matrix ( const Matrix <T> &M )
: rows_count ( M.rows_count ), columns_count ( M.columns_count ), items ( M.items ) {}
Но есть проблема со следующими операторами: =
, ==
, !=
Я пытаюсь назначить матрицу A
Matrix <double> A (2,2);
Matrix <double> C (2,2);
к матрице B
Matrix <int> B (2,2);
B = A; //Compiler error, see bellow, please
где A и B имеют разные типы. Та же самая ситуация происходит для общих матричных операций
C = A + B //Compiler error, see bellow, please
но компилятор показывает эту ошибку:
Error 23 error C2446: '!=' : no conversion from 'const Matrix<T> *' to 'Matrix<T> *const '
Спасибо за вашу помощь ...