Инициализация статического объекта в Windows (для фабрики классов)

Я пишу фабрику классов (в 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:
Все эти вещи скомпилированы в статическую библиотеку, которая связана с исполняемым файлом.

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]