读书人

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

发布时间: 2013-06-25 23:45:42 作者: rapoo

单件模式在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吧?

读书人网 >C++

热点推荐