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