📄 main.cxx
字号:
#include <ptlib.h>#include <ptclib/http.h>#include <ptclib/ptts.h>#include <ptclib/pwavfile.h>#include "abstract.h"class Factory : public PProcess{ public: Factory() : PProcess() { } void Main();};PCREATE_PROCESS(Factory)template <class BaseClass, class TypeClass = PString>class Display{public: static void ConcreteTypes(const char * title) { cout << "\nConcrete types for " << title << ':' << endl; typename PFactory<BaseClass, TypeClass>::KeyList_T keys = PFactory<BaseClass, TypeClass>::GetKeyList(); typename PFactory<BaseClass, TypeClass>::KeyList_T::const_iterator r; for (r = keys.begin(); r != keys.end(); ++r) cout << " " << *r << endl; cout << endl; } static void TestFactory() { typename PFactory<BaseClass, TypeClass>::KeyList_T keyList = PFactory<BaseClass, TypeClass>::GetKeyList(); unsigned i; for (i = 0; i < keyList.size(); i++) { for (int j = 0; j < 3; j++) { MyAbstractClass * c = PFactory<BaseClass, TypeClass>::CreateInstance(keyList[i]); if (c == NULL) cout << "Cannot instantiate class " << keyList[i] << endl; else cout << keyList[i] << "::Function returned \"" << c->Function() << "\", instance " << (void *)c << endl; } } }};void Factory::Main(){ Display<MyAbstractClass>::ConcreteTypes("MyAbstractClass by PString"); Display<MyAbstractClass>::TestFactory(); Display<MyAbstractClass, unsigned>::ConcreteTypes("MyAbstractClass by unsigned"); Display<MyAbstractClass, unsigned>::TestFactory(); Display<PURLScheme>::ConcreteTypes("PURLScheme"); Display<PTextToSpeech>::ConcreteTypes("PTextToSpeech"); Display<PPluginModuleManager>::ConcreteTypes("PPluginModuleManager");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -