29 lines
711 B
C++
29 lines
711 B
C++
#pragma once
|
|
|
|
#include <vector>
|
|
|
|
class ISave;
|
|
|
|
struct ObjectFactory
|
|
{
|
|
const char* name;
|
|
ISave*(*factory)();
|
|
};
|
|
|
|
// Создаёт список фабрик объектов
|
|
#define FACTORIES_LIST std::vector<ObjectFactory> 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)
|
|
};
|
|
*/
|