gpt4 book ai didi

C++ 从模板类派生

转载 作者:行者123 更新时间:2023-11-28 06:48:26 24 4
gpt4 key购买 nike

我正在尝试创建以下类的子类:

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
  1. 我是否正确地继承了 Cmybase_form
  2. 我使用的子类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++ 从模板类派生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24501648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com