Как правильно сделать наследование от шаблонного класса C++?
У меня есть 2 класса: Матрица и Квадратная матрица. Кв. матрица - наследуется от Матрицы. Но мне нужно сделать так, чтобы эти классы были шаблонными и тут возникла проблема - не получается нормально унаследовать шаблонный класс.
Шаблонный класс Матрица (matrix.h):
template <class number>
class Matrix
{
protected:
number** M;
int col;
int str;
public:
Matrix();
~Matrix();
Matrix(int _str, int _col);
};
Шаблонный класс Квадратная матрица:
#include "matrix.h"
template <class number>
class SqMatrix: public Matrix<number>
{
public:
SqMatrix() : Matrix<number>(){}
SqMatrix(int _n);
number Det();
};
template <class number>
SqMatrix <number> ::SqMatrix(int _n){
...
}
template <class number>
number <number> SqMatrix::Det(){
...
}
Конструктор по умолчанию я беру из базового класса, а другие 2 метода - новые.
При сборке возникают ошибки (очень много одинаковых ошибок) по типу:
'col' was not declared in this scope;
'str' was not declared in this scope;
'M' was not declared in this scope;
Т.е. не получается обратится к полям базового класса в методах класса-наследника.
Почему так происходит? Кажется, что решение очень простое, но я никак не могу понять что я делаю не так.
Источник: Stack Overflow на русском