#pragma once #include class ISave; struct ObjectFactory { const char* name; ISave*(*factory)(); }; // Создаёт список фабрик объектов #define FACTORIES_LIST std::vector factories = // Создаёт фабрику для класса #define GENERATE_FACTORY_OBJECT(Class) ObjectFactory{#Class, []()->ISave* { return new Class(); }}, /* * Все классы или их родители в этом списке * должны реализовывать инетфейс ISave. * Пример использования: FACTORIES_LIST { GENERATE_FACTORY_OBJECT(SometimeClass_One) GENERATE_FACTORY_OBJECT(SometimeClass_Two) }; */