模板类不继承基本模板类

时间:2014-04-02 22:54:48

标签: c++ templates inheritance

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

这是两个类的头文件:

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)
{

}
};

Main.cpp的

#include "Matrix.h"

using namespace std;

void main()
{
NumMatrix<int> A(2,2);
}

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

1 个答案:

答案 0 :(得分: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()