从模板类继承时出错

时间:2015-10-31 10:06:05

标签: c++ templates inheritance

在尝试执行如下所述的类似操作时,我遇到了错误。这是否可以在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;
}
}

1 个答案:

答案 0 :(得分:3)

除了语法错误(例如Class而不是class和评论中的括号)之外,您应该明确地调用基类&#39;带有你打算传递给它的参数的构造函数

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

因为A没有默认构造函数。

Example here