我正在编写一个类工厂(在 Visual Studio 2008 中),其中类正在注册自己。类工厂是一个单例,类注册自己是这样的:
在工厂.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:所有这些东西都被编译成一个静态库,该库链接到一个可执行文件。