Cy Edmunds wrote:
"Luke Meyers" <n.luke.meyers@gmail.com> wrote in message
news:1149087736.028491.131850@i39g2000cwa.googlegroups.com...
Cy Edmunds wrote:
"Krivenok Dmitry" <dima@icebrains-soft.com> wrote in message
All elements of a container must be of the same type. If it is a
pointer
or
smart pointer to a common base class we have dynamic polymorphism.
Static
polymorphism can be accomplished using a flag to determine the actual
type:
struct clumsy
{
int flag;
union (...} other_stuff;
};
Uh, I'm pretty sure this is not what most people mean by "static
polymorphism." How did you come to associate the term with this ugly
scheme?
The "static"/"dynamic" distinction wrt polymorphism, as with e.g.
typing, refers to compile-time vs. run-time. With static polymorphism,
the actual type of the object is known at compile-time. The usual
(only?) mechanism in C++ for this is templates.
Luke
The original poster asked about heterogeneous containers. How would you
do
that with templates?
Check out the following example code:
http://code.axter.com/HeterogeneousContainer1.cpp
http://code.axter.com/HeterogeneousContainer2.cpp
http://code.axter.com/HeterogeneousContainer3.cpp
Each of the above files have different levels of complexity for
creating a heterogeneous container.
The basic idea is to create a wrapper class that acts like an interface
to the different types.
Although the types don't have to derive from the same object, they do
have to have a common method or common data to access.
----------------------------------------------------------------------------------------
David Maisonave
http://axter.com
Author of Axter's policy based smart pointers
(http://axter.com/smartptr)
Top ten member of C++ Expert Exchange:
http://www.experts-exchange.com/Cplusplus
----------------------------------------------------------------------------------------