我正在尝试创建一个继承模板基类的模板子类,但是在初始化模板子类时遇到编译错误。我认为这是因为我可能没有正确定义子类的构造函数,但我不确定正确执行它的语法。
这是两个类的头文件:
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个参数
答案 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()