在Windows中初始化静态对象(对于类工厂)

时间:2014-12-03 14:35:42

标签: c++ visual-studio-2008 class-factory

我正在编写一个类工厂(在Visual Studio 2008中),这些类正在注册自己。班级工厂是一个单身人士,班级注册他们自己:

在Factory.h中

class Factory {...};

template<typename T>
class Register
{
public: 
    Register()
    {
        Factory::instance().register<T>();
    }
};
在SomeRegisteredClass.cpp中

#include <Factory.h>

class SomeRegisteredClass : public ISomeInterface
{
};

static Register<SomeRegisteredClass> register;

然而,在运行时期间,Register的构造函数永远不会被调用,因此,SomeClass永远不会被注册。我怀疑有一些优化可以优化SomeRegisteredClass.cpp中的东西(因为SomeClass不是直接在代码中的任何其他地方使用,而是仅通过其接口)。可能是,我怎么能禁用它。

EDIT1: 所有这些东西都被编译成一个静态库,它链接到一个可执行文件。

0 个答案:

没有答案