diff --git a/include/common/plugin_factory.h b/include/common/plugin_factory.h index f038ea6..e0afd1d 100644 --- a/include/common/plugin_factory.h +++ b/include/common/plugin_factory.h @@ -34,6 +34,7 @@ class PluginFactory { static PluginFactory& instance(); private: + static PluginFactory* _instance; PluginMap _plugin_map; }; diff --git a/src/common/plugin_factory.cpp b/src/common/plugin_factory.cpp index b8a5c38..560d81e 100644 --- a/src/common/plugin_factory.cpp +++ b/src/common/plugin_factory.cpp @@ -16,6 +16,8 @@ namespace anyq{ +PluginFactory* PluginFactory::_instance = NULL; + // 注册组件回调函数 int PluginFactory::register_plugin(std::string plugin_type, PluginCreateFunc create_func) { _plugin_map[plugin_type] = create_func; @@ -32,8 +34,9 @@ void* PluginFactory::create_plugin(std::string plugin_type) { } PluginFactory& PluginFactory::instance() { - static PluginFactory factory_ins; - return factory_ins; + if(_instance == NULL) + _instance = new PluginFactory(); + return *_instance; } }