我正在编写一个类工厂(在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: 所有这些东西都被编译成一个静态库,它链接到一个可执行文件。