Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
typedef boost::function<boost::shared_ptr<Test>(std::string)> factory_t;
std::map<std::string, factory_t> factory = boost::assign::map_list_of
("test", factory_t(boost::factory<boost::shared_ptr<Test> >()))
("testchild", factory_t(boost::factory<boost::shared_ptr<TestChild> >()))
;
boost::shared_ptr<Test> a = factory["test"]("A");
a->func();
boost::shared_ptr<Test> b = factory["testchild"]("B");
b->func();
Аргументированная фабрика