Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从模板类继承时出错_C++_Templates_Inheritance - Fatal编程技术网

C++ 从模板类继承时出错

C++ 从模板类继承时出错,c++,templates,inheritance,C++,Templates,Inheritance,当我尝试做下面描述的类似事情时,我会遇到错误。这是否可能在C++中使用类模板?< /p> 我想传递类B和C的本地声明对象,并使用D类传播到类A,D类充当B和C与A交互的公共接口 template<typename T1, typename T2> Class A { protected: T1 _t1; T2 _t2; public: A(T1 t1 , T2 t2) : _t1(t1), _t2(t2) {} }; class B {// do something};

当我尝试做下面描述的类似事情时,我会遇到错误。这是否可能在C++中使用类模板?< /p> 我想传递类B和C的本地声明对象,并使用D类传播到类A,D类充当B和C与A交互的公共接口

template<typename T1, typename T2>
Class A
{
 protected:
 T1 _t1;
 T2 _t2;
 public:
 A(T1 t1 , T2 t2) : _t1(t1), _t2(t2) {}
};

class B {// do something};

class C {// do something};

template<typename M, typename N>
class D : public A<M,N>
{
  public:
  D(M m, N n)
  {
     A(m,n);
  }
};

int main()
{
  B objB;
  C objC;

  D<B,C> objD(objB, objC);

  return 0;
}
}
模板
甲级
{
受保护的:
T1 T1;
T2 T2;
公众:
A(T1,t2t2):_T1(T1),_T2(T2){
};
B类{//做某事};
C类{//做某事};
模板
D类:公共A
{
公众:
D(M,N)
{
A(m,n);
}
};
int main()
{
B objB;
C objC;
D objD(objB、objC);
返回0;
}
}

除了语法错误(例如,
Class
而不是
Class
和注释中的括号)之外,您应该使用要传递给基类的参数显式调用基类的构造函数

template<typename M, typename N>
class D : public A<M,N>
{
  public:
  D(M m, N n) : A<M,N>(m,n)
  {}
};
模板
D类:公共A
{
公众:
D(M,N):A(M,N)
{}
};
因为
A
没有默认构造函数


你没有说你得到了什么样的错误,但是一个是
D
构造函数,它应该是
D(M,nn):A(M,N){}
。你的代码在构造函数中构造了一个临时的
a
,但是忘记了初始化基类。请帮我们一个忙并发布真实的代码。将其复制并粘贴到在线编译器工具中,只是为了发现您编写的是
Class
,而不是
Class
,这很烦人。