我正在尝试创建以下子类:
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;
}
如果不满足您的要求,请还原。我们将对此进行解决。
关于c++ - 从模板类派生C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24501648/