Boost logo

Boost Users :

Subject: Re: [Boost-users] how to make a vector to derivedClass::create() methods
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2009-01-22 16:09:58


AMDG

Victor.Whiskey.Yankee wrote:
> Thank you for your patience.
> I am really wanting to make a factory that holds a
> std::map where the pair.first is a std::string and
> the pair.second is somehow a pointer to a constructor or create()
> method to any of several derived classes>.
>
> I thought expressing in terms of vector might be simplified and enough
> for my understanding.
>

I see. How about using Boost.Function like this:

std::map<std::string, boost::function<Base*()> > factory_impl;

//...

factory_impl["Derived1"] = boost::lambda::new_ptr<Derived1>();

// ...

Base* b = factory_impl["Derived1"]();

In Christ,
Steven Watanabe


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net