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;
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);
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.
Anyway, if Anthony allows me I will now use his library as the basic building block of my object factory
Regards,
Anthony Liguori
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost