首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

单件模式在dll中使用 出现有关问题

2013-06-25 
单件模式在dll中使用 出现问题单件类class ROOT{private: ROOT::ROOT(void)public:~ROOT(void)static RO

单件模式在dll中使用 出现问题
单件类
class ROOT
{
private: 
ROOT::ROOT(void);
public:
~ROOT(void);
static ROOT* getInstance(void);
void initialize(void);
bool loadConfigFile(const char* lpfilepath);

//CList<plugin,plugin&> pluginlist;
std::list<plugin*> pluginlist;
        。。。。。。。。。。


ROOT *ROOT::getInstance(void)
{
static ROOT root;
return &root;
}
在dll中的导出函数里
extern "C" _declspec(dllexport) void  dllStartPlugin( void )
{
turn=new turnLRplugin();
ROOT::getInstance()->pluginlist.push_back(turn);
ROOT *root=ROOT::getInstance();
}
debug到这个地方
单件模式在dll中使用 出现有关问题
显示只有pluginlist里有一个节点
可是回到主程序里单件模式在dll中使用 出现有关问题
pluginlist没有节点 看样子是好像不是一个对象,到底是我的类设计的不对,还是别的原因求指教 单件模式 类
[解决办法]
两个静态编译单元, 因此就有了2个static ROOT root.
不过你主程序怎么会调用到ROOT *ROOT::getInstance(void) 呢?
貌似只能在DLL里面使用这个singleton吧?

热点排行