在尝试执行如下所述的类似操作时,我遇到了错误。这是否可以在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;
}
}
答案 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
没有默认构造函数。