Reputation: 918
I am trying to create a subclass of the following:
template <
class THandler,
class ThreadModel = CComSingleThreadModel,
class TagReplacerType = CHtmlTagReplacer< THandler >
>
class CRequestHandlerT :
public TagReplacerType,
public CComObjectRootEx< ThreadModel >,
public IRequestHandlerImpl< THandler >
The class above works perfectly if used as follows:
class Cmy_form : public CRequestHandlerT<Cmy_form>
But I am trying to create a subclass (to extend CRequestHandlerT functionality by adding an additional member function):
class Cmybase_form : public CRequestHandlerT<Cmybase_form> {...};
class Cmy_form : public Cmybase_form {...}; // builds but runtime error
Upvotes: 0
Views: 884
Reputation: 366
I have wrote some code based on my understanding and it is working fine. Please let me know if I have misunderstood your requirement.
#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;
}
Please revert back if it does not satisfy your requirement. We will work out on that.
Upvotes: 1