模板类不继承基模板类

Template class not inheriting base template class

本文关键字:继承      更新时间:2023-10-16

我正在尝试创建一个继承模板基类的模板子类,但是在初始化模板子类时出现编译错误。我认为这是因为我可能没有正确定义子类的构造函数,但我不确定正确执行此操作的语法。

下面是包含这两个类的头文件:

template<typename T> class Matrix
{
public:
~Matrix();
Matrix();
Matrix(uint rows, uint columns);
uint height;
uint width;
uint stride;
size_t size;
private:
vector<T> elements;
T* firstElement;
};
template<typename T> class NumMatrix : public Matrix<T>
{
public:
NumMatrix(uint rows, uint columns) : Matrix<int>::Matrix<T>(uint rows, uint columns)
{
}
};

主.cpp

#include "Matrix.h"
using namespace std;
void main()
{
NumMatrix<int> A(2,2);
}

编译错误是:"NumMatrix::NumMatrix":没有重载函数需要 2 个参数

更改以下内容:

NumMatrix(uint rows, uint columns) : Matrix<int>::Matrix<int>(uint rows, uint columns)

NumMatrix(uint rows, uint columns) : Matrix<T>(rows, columns)

此外,为了符合标准(使用更多编译器进行编译),请更改以下内容:

void main()

int main()