Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Windows中初始化静态对象(对于类工厂)_C++_Visual Studio 2008_Class Factory - Fatal编程技术网

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

C++ 在Windows中初始化静态对象(对于类工厂),c++,visual-studio-2008,class-factory,C++,Visual Studio 2008,Class Factory,我正在VisualStudio2008中编写一个类工厂,其中的类正在进行自我注册。类工厂是一个单例,类自己注册如下: 在工厂里 class Factory {...}; template<typename T> class Register { public: Register() { Factory::instance().register<T>(); } }; 在SomeRegisteredClass.cpp中 #incl

我正在VisualStudio2008中编写一个类工厂,其中的类正在进行自我注册。类工厂是一个单例,类自己注册如下:

在工厂里

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;
然而,在运行时,寄存器的构造函数从未被调用,因此,SomeClass从未被注册。我怀疑有一些优化正在进行,它优化了SomeRegisteredClass.cpp中的内容,因为SomeClass没有直接在代码中的其他任何地方使用,而只是通过其接口使用。可能是这样,我怎样才能禁用它

编辑1:
所有这些内容都被编译到一个静态库中,该库链接到一个可执行文件

事实上,全局变量是一个雷区,除非在转换单元中使用函数或变量,否则不能保证初始化此变量。恐怕我不能提供一个建设性的答案,除了不使用globals。