Как стать автором
Обновить

Комментарии 9

Сделайте кат повыше, пожалуйста.
с удовольствием, если подскажите как это сделать. пока тут не очень разобрался
В TemplateFactory после разрушения объекта будет утечка памяти, создаётся объект, вставляется в Map указатель… и не освобождается.
Ну, все достаточно просто решается добавлением удаления в деструктор qDeleteAll(handler.values())
Или использованием boost::ptr_map… все утечки просто исправляются, главное найти.
Скажите уже кто-нибудь Qt-программистам, что «ружья кирпичом не чистят».
Прошу прощения?
Всё, что написал автор поста, используя связку boost::shared_ptr + boost::factory:
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();

Я бы не сказал, что это именно в хаб Qt Software годится (как по мне, так тут С++, напичканный парой qtcore классов), но вполне подойдет.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории