У меня есть статическая фабрика, которая использует статический член для регистрации класса в фабричной системе.
class Foo_A_Maker : public FooFactory<Foo, const std::string &>
{
private:
// Register this as a type using a static instance of itself.
// This is really the only time it is created. That's why the
// constructor is private.
Foo_A_Maker() : FooFactory("Foo_A") {}
static const Foo_A_Maker registerThis;
public:
virtual std::shared_ptr<Foo> MakeProduct(const std::string& params) const;
};
Это работало годами во всех моих проектах, но теперь я добавил егов статическую библиотеку.В статической библиотеке ctor никогда не вызывается, и объект никогда не регистрируется.Если я помещу этот код в exe-проект, он снова заработает.Я установил, что это не соединение, введя ошибку времени ссылки.
Я что-то упустил?Могу ли я заставить ссылку?И если я использую это через границы компиляции, может ли проект EXE добавить свои собственные фабрики?
Спасибо всем.