Я хочу создать объект, который может создавать экземпляр класса по команде. Причина, по которой я хочу сделать это именно так, заключается в том, что мне нужно создать экземпляры объекта, все из которых имеют одни и те же начальные параметры, считанные из файла, но я хочу загрузить эти параметры только один раз. Мое решение использует лямбда-выражения, но оно кажется очень грязным:
#include <functional>
template <class GENERATED_TYPE, class... Args> requires requires(Args... data) {
{ new GENERATED_TYPE(data...) } -> std::same_as<GENERATED_TYPE*>;
}
class ObjectGenerator {
public:
ObjectGenerator(Args... data){ instance_generator = [data...](){ return new GENERATED_TYPE(data...); }; }
~ObjectGenerator(){}
GENERATED_TYPE* getInstance() { return instance_generator(); }
private:
std::function<GENERATED_TYPE*()> instance_generator;
};
Есть ли лучший способ, каким-то образом сохранив Args... data
, а затем используя сохраненный пакет параметров позже?
@NathanOliver, я считаю, что
ObjectGenerator
уже является шаблоном...@ r3musn0x О да. Я думал, что ОП создавал концепцию, а не ограничения на параметры. Все еще нужно приспособиться к концепциям и ограничениям. По крайней мере, теперь я могу добавить ответ :)