Boost logo

Boost :

From: Anthony Liguori (anthony_at_[hidden])
Date: 2002-11-21 21:16:46

Christophe Meessen wrote:

> What I need is something like the factory method design pattern. It is
> a method that will construct different types of class instances
> according to some key information. It could be the class name string,
> an integer or anything else. It is trivial to implement using
> Anthony's virtual constructors.

I'm actually looking to produce similiar functionality for my metaclass
library (returns ctors and methods based on a function type and key
information). The thing is, with the virtual ctor library, implementing
a factory merely requires:

// Assuming you want a factory for class Base that takes two int arguments

typedef std::map<std::string, boost::function<Base *(int, int)> >
BaseFactory factory;


// Register subclasses
factory["Subclass1"] = boost::constructor<Subclass1 *(int, int)>();
factory["Subclass2"] = boost::constructor<Subclass2 *(int, int)>();


// Make use of factory
std::shared_ptr<Base> base = factory["Subclass1"](10, 15);

> Anyway, if Anthony allows me I will now use his library as the basic
> building block of my object factory

The boost license is Open Source so you don't need my permission :) Out
of curiousity though, do you think that a factory class is still useful?
 Perhaps we can take this discussion off the list and figure out what
the requirements of a factory class would be that virtual constructors
wouldn't provide.

Anthony Liguori

Boost list run by bdawes at, gregod at, cpdaniel at, john at