从模板类派生
C++ Derive from template class
本文关键字:派生 更新时间:2023-10-16
我正在尝试创建以下子类:
template <
class THandler,
class ThreadModel = CComSingleThreadModel,
class TagReplacerType = CHtmlTagReplacer< THandler >
>
class CRequestHandlerT :
public TagReplacerType,
public CComObjectRootEx< ThreadModel >,
public IRequestHandlerImpl< THandler >
如果按照以下方式使用,上面的类可以完美地工作:
class Cmy_form : public CRequestHandlerT<Cmy_form>
但我试图创建一个子类(通过添加一个额外的成员函数来扩展CRequestHandlerT功能):
class Cmybase_form : public CRequestHandlerT<Cmybase_form> {...};
class Cmy_form : public Cmybase_form {...}; // builds but runtime error
- 我子类化Cmybase_form正确吗?
- 我是否使用子类Cmy_form正确?
我根据我的理解写了一些代码,它工作得很好。如果我误解了你的要求,请告诉我。
#include <iostream>
using namespace std;
template <class T>
class tbase {
public:
tbase () {}
~tbase () {}
virtual bool my_print (T value)
{
cout << "Value passed is: " << value << endl;
}
virtual void print ()
{
cout << "TBASE" << endl;
}
};
template <class T>
class mbase : public tbase<T>
{
public:
mbase ()
: tbase<T>()
{}
virtual void print ()
{
cout << "MBASE" << endl;
}
};
template <class T>
class child : public mbase <T>
{
public:
child ()
: mbase<T> ()
{}
virtual void print ()
{
cout << "CHILD" << endl;
}
};
int main ()
{
tbase <int> * b = new child<int>;
b->print();
b->my_print( 10 );
return 0;
}
如果不符合您的要求,请退回。我们会解决的。
相关文章:
- 为什么使用 "this" 指针调用派生成员函数?
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 在派生函数中指定void*参数
- 如何通过派生类函数更改基类中的向量
- 如何委托派生类使用其父构造函数?
- 如何使用单独文件中的派生类访问友元函数对象
- 派生类销毁的最佳实践是什么
- 如何使用基类指针引用派生类成员
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何引用基类的派生类?
- 存储模板类型以强制转换回派生<T>
- 需要从 istream 和 ostream 派生 iostream
- 在 C++ 中用派生类型重写成员函数
- 具有多个类、派生类的C++正向声明
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 如果基类包含双指针成员,则派生类的构造函数
- 为什么此派生对象无法访问基类的后递减方法?
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践