Серьезно, я посмотрел на подобные примеры, но я до сих пор не понимаю, почему он не работает. У меня возникают проблемы с перегрузкой оператора =.Оператор = перегрузка с помощью шаблонов
Я получаю две следующие ошибки:
- ошибка C2955: «Матрица»: использование шаблона класса требует список аргументов шаблона
- ошибка C2244: «Матрица оператор :: =»: не может соответствовать функции определение существующей декларации
Может кто-нибудь объяснить, что не так?
Спасибо всем
//Matrix.hpp
template<typename T>
class Matrix
{
public:
Matrix(int numberRows, int numberColumns);
~Matrix();
void asgValue(T value, int row, int column);
T getValue(int row, int column);
Matrix<T>& operator= (const Matrix<T>& rhs);
friend Matrix<T>& operator+ (const Matrix<T>& lhs, const Matrix<T>& rhs);
private:
T **twoDarray;
int nbrRows;
int nbrColumns;
};
#include "Matrix.inl"
//Matrix.inl
//Matrix<T>& Matrix<T>::operator= (const Matrix<T>& rhs)
template<typename T>
Matrix<T>& Matrix::operator= (const Matrix<T>& rhs)
{
for (int i = 0; i < nbrRows; i++)
{
for (int j = 0; j < nbrColumns; j++)
{
twoDarray[i][j] = rhs.twoDarray[i][j];
}
}
return *this;
}
Если 'rhs' имеет другое количество строк или столбцов, я думаю, что у вас будет плохое время. Я думаю, вы должны устанавливать 'nbrRows' и' nbrColumns' из 'rhs.nbrRows' и' rhs.nbrColumns' и выделять новый 'twoDarray'. – dreamlax
Спасибо за ваш совет, я обязательно посмотрю. –