Я не знаю, как назвать проблему, с которой я столкнулся. Поэтому у меня есть класс шаблонов для матриц, чтобы принимать разные типы, например. int, double и другие вещи. Моя проблема в том, что если я хочу работать с другим типом экземпляра класса, я не могу его скомпилировать. Вот определение функции add, которая предположительно должна добавить матрицу к текущему экземпляру.Выполнение двух типов одинаковых шаблонов
template <class T>
void Matrix<T>::add(const Matrix &m) {
for (int i = 0; i < this->rows; ++i) {
for (int j = 0; j < this->cols; ++j) {
this->mat[i][j] += m.at(i,j);
}
}
}
Это работает очень хорошо, например. если я добавлю пример Matrix<double>
в Matrix<double>
.
Но я не могу заставить его работать, добавляя Matrix<int>
к Matrix<double>
например:
Matrix<double> matA(2,2);
Matrix<int> matB(2,2);
matA.add(matB);
Компилятор (г ++ 4.8) жалуется:
error: no matching function for call to ‘Matrix<double>::add(Matrix<int>&)
Что может быть обходной путь?