具有模板化父类的派生类
derived class with templated parent class
我有父类
template <class T_ENUM>
class A
{
public:
A(int*);
~A();
}
现在当我创建一个派生类时,是否允许在父类上初始化模板?
enum Benum {e1, e2, e3};
class B : public A<Benum >
{
public:
B(int* a):A(a);
~B();
}
我得到以下编译错误
对' B::B(int*)'的未定义引用
B (int *): (a),
这会产生一个编译错误。
构造函数应该这样实现:
B(int* a) : A(a) {}
编辑:
您可能还希望将您的单参数构造函数设置为explicit
。例如:
class B
{
public:
explicit B(int* a);
};
防止从int*
到B
的隐式类型转换。
MCVE代码:
#include <iostream>
enum Benum
{
e1,
e2,
e3
};
template<class T_ENUM>
class A
{
public:
explicit A(int*)
{
std::cout << "A ctor" << std::endl;
}
virtual ~A()
{
}
};
class B : public A<Benum>
{
public:
explicit B(int* a) : A(a)
{
std::cout << "B ctor" << std::endl;
}
~B()
{
}
};
int main()
{
int x = 3;
B b(&x);
return 0;
}
MCVE输出:
A ctor
B ctor
生活例子
相关文章:
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 从模板化父类中的派生内部类访问受保护的成员变量
- 将派生类的构造函数声明为父类的友元
- 如何将一个变量用于父类和派生类
- 从多重继承中的派生类函数调用适当的父类函数
- 将对象强制转换为派生类以访问父类的受保护成员
- 如何将派生类作为函数参数传递:如果派生类成员不在父类中怎么办
- 如何从派生类实例调用父类重载函数
- 使父类成员对每个派生类不可修改
- 在 C++ 的父类中创建派生的 CARS
- 指向父类中派生类的函数的指针
- 从派生类调用父类的模板函数
- c++ 派生基类 Friend 函数访问父级上的私有函数
- 在C++中将派生类类型的向量链接到父类类型的向量
- 派生类是否可以访问作为内部类的好友的父类的受保护内部类的私有方法
- 将指向派生类实例的指针集合视为父类
- 如何从派生类修改父类的变量?
- 使用派生类调用父类的模板化函数重载
- C++派生类-从父类调用虚拟函数
- 父类是否可以访问C++中派生类的对象