我正在寻找一个可以根据命令实例化类的对象。我之所以要这样做,是因为我必须创建一个对象的实例,它们都具有从文件中读取的相同初始参数,但我只想加载这些参数一次。我的解决方案是使用 lambdas,但感觉很脏:
#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
某种方式存储,然后稍后使用存储的参数包?