1

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

4

0 回答 0