Как и многие до меня, я стараюсь, чтобы мои производные типы автоматически регистрировались в моей фабрике. Я прочитал много вопросов и попытался сосредоточиться на том, чего я там не нашел.
У меня все работает нормально, кроме автоматической регистрации.
Мои цели:
Что у меня есть:
template
class abstract_factory
{
public:
template < typename Tsub > static void register_class();
static T* create( const std::string& name );
private:
// allocator is a helper class to create a pointer of correct type
static std::map > > s_map;
};
abstract_factory ::register_class();
То, что я пробовал (или хотел бы сделать, но не знаю, как правильно):
registrator class
:шаблонный класс, который создается статически в Derived.cpp
и должен вызывать abstract_factory::register_class()
в своем конструктореDerived
в main()
это работает -> вроде как противоречит цели, хотяDerived.hpp
и установить он со статическим методом регистрации в Derived.cpp
-> снова никогда не вызывается.abstract_factory
настоящим синглтоном вместо того, чтобы все было статично?Буду рад любому совету, большому или маленькому, спасибо.