读书人

【Poco】Poco:DynamicFactory的事例

发布时间: 2012-11-23 00:03:43 作者: rapoo

【Poco】Poco::DynamicFactory的例子

#include "../tmain.hpp"namespace DF{class Base{public:Base(){}virtual ~Base(){}};class A: public Base{public:void print(){std::cout << "My name is A Class!" << std::endl;}};class B: public Base{};}void test_DynamicFactory(){// 创建一个工厂实例.Poco::DynamicFactory<DF::Base> dynFactory;// 类A注册到工厂, 注册名为A, 当然也可以为其他的名字.dynFactory.registerClass<DF::A>("A");dynFactory.registerClass<DF::B>("B");assert (dynFactory.isClass("A"));assert (dynFactory.isClass("B"));// 通过工厂, 创建类A的对象.DF::A* a = dynamic_cast<DF::A*>(dynFactory.createInstance("A"));std::auto_ptr<DF::A> ap(dynamic_cast<DF::A*>(dynFactory.createInstance("A")));a->print();ap->print();try{// 已经注册过了, 将抛出异常.dynFactory.registerClass<DF::A>("A");}catch (...){}try{// 反注册类B的dynFactory.unregisterClass("B");// 未注册的类, 注册时将抛出异常.std::auto_ptr<B> b(dynamic_cast<B*>(dynFactory.createInstance("B")));}catch (Poco::NotFoundException&){}}


读书人网 >编程

热点推荐