Как правильно сделать наследование от шаблонного класса C++?

Рейтинг: 0Ответов: 0Опубликовано: 27.04.2023

У меня есть 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;

Т.е. не получается обратится к полям базового класса в методах класса-наследника.

Почему так происходит? Кажется, что решение очень простое, но я никак не могу понять что я делаю не так.

Ответы

Ответов пока нет.