从模板类继承时出错

Error during inheriting from template class

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

我在尝试执行下面描述的类似操作时遇到错误。使用c++中的类模板可以做到这一点吗。

我想传递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;
}
}

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

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

因为CCD_ 3不具有默认构造函数。

此处的示例