Re: Create objects
On Mar 10, 2:57 pm, SG <s.gesem...@gmail.com> wrote:
On 10 Mrz., 13:32, "g3r...@gmail.com" <g3r...@gmail.com> wrote:
On Mar 9, 5:15 pm, Anarki <Deepchan...@gmail.com> wrote:
Is there a way to create an object by just knowing its type?
Here's just another suggestion: You could try to combine the
envelope/ letter idiom with the factory pattern in your case.
The "envelope" makes it easier to manage the polymorphic
object's life-time.
http://www.google.com/search?q=c%2B%2B+envelope+letter
http://www.google.com/search?q=factory+pattern
The envelope/letter pattern is designed so that polymorphic
objects can have value semantics. It's rarely needed, and has
considerable overhead.
In C++, there is no solution for arbitrary types: I would
consider this a feature, however, and not a defect. If all of
the types in question derive from a common base class, it is
rather simple to use a std::map< std::string, Base* (*)() > to
map names to a factory function. (If the types are not
necessarily all known at compile time, it's also possible to
define a mapping type name to filename, with the corresponding
file being dynamically linked in if the name isn't found in the
map. The types still have to derive from a common base,
however, to be useful.)
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34