// Warning-this is NOT C++
// Assumes Class is a class that's also an object
Class Read(const char *filename);
Document *DocumentManager::OpenDocument(const char *filename)
{
Class theClass = Read(filename);
Document *pDoc = new theClass;
}
So I wrote up a class that provided virtual constructor functionality. It actually allows for types to be treated as objects including storing types in any STL container. This allows for really advanced factory algorithms and all sorts of fun stuff. The basic usage is as follows:
struct A
{
A(int a);
};
struct B : public A
{
B(int a);
};
typedef factory<A, int> FactoryA;
FactoryA b = FactoryA::create<B>();
FactoryA c;
A *a = b(10); // Returns new B(10)
c = b;
delete a;
a = c(15); // Returns new B(10)
The other interesting characteristic is that factories are compatiable with functions so bind functions can be used. If a subclass has additional constructor parameters that had reasonable defaults, those parameters could be bind'ed which is something that no other factory implementation is capable of.
I haven't submitted yet because it hasn't been updated to the new function class and the documentation isn't finished but since the topic came up, I thought I'd see what people thought.
Here's the site:
http://clam.rutgers.edu/~aliguori/factories/
Regards,
Anthony Liguori
David B. Held wrote:
Christophe Meessen wrote:[...] Would there be any interrest in such thing for boost ? If there are better solution I would be happy to know about it.
How does your library compare to Loki's class factories? Consult Modern C++ Design for an explanation.
Dave
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost