Re: polymorphic base class pointers and template classes
* awm129:
I have a need to wrap several different (related) legacy structures in
thier own classes. This seems to scream template classes with the
structure type as a template parameter for the creation of a private
class member of the templated type.
Now, I would also like to use a polymorphic base class pointer with
this family of classes (for use with a factory) as well as include
some common functionallity in a base class. I would also like to
force the inclusion of this templated private member for each derived
class. This seems increadibly simple but I can't seem to quite wrap
my head around how this would work. I want to do something simlar to
this:
//
// base class to implement common functionallity
//
template<class T>
class Base
This would create a family of distinct base classes.
{
virtual T wrappedStruct = 0;
C++ does not support virtual data.
void foo();
What's this for?
}
Missing semicolon.
Did you intend for Base to have only private (inaccessible) members?
//
// derived classes
//
template<class T>
class D1 : Base<T>
{
T wrappedStruct;
}
int main()
{
// assume Bar is a structure type
Bar s;
// now I want to use a polymorphic pointer to manage these things
Base* ptr = DFactory( s );
Why do you want that?
What is the common functionality for the classes?
}
I dont think I can create an "untyped" (eg. without the <Type>) Base
pointer, but then how do I get my polymorphism to work? Does any of
this make sense? Any ideas? Thanks!
You could always use multiple inheritance, like
struct Base
{
virtual ~Base() {}
// whatever
};
struct MyLegacyClass: Base, LegacyClass
{
// Whatever
};
However, it may be a disservice to you to suggest anything at all, because while
you've described roughly a kind of technical solution, you haven't really
described the problem that this solution was meant to solve, in particular what
the object factory is meant to solve (and the object factory seems to the reason
for the wrapping, so if there's a better solution than the factory, which there
might well be, depending on what the problem is, then ignore the above).
Cheers & hth.,
- Alf
--
Due to hosting requirements I need visits to <url: http://alfps.izfree.com/>.
No ads, and there is some C++ stuff! :-) Just going there is good. Linking
to it is even better! Thanks in advance!