对于一个库,我想要一个函数来接受另一个函数及其参数,然后将它们全部存储起来以供以后调用。参数必须允许任何类型的混合,但函数只需要返回 void。像这样的东西:
void myFunc1(int arg1, float arg2);
void myFunc2(const char *arg1);
class DelayedCaller
{ ...
public:
static DelayedCaller *setup(Function func, …);
};
...
DelayedCaller* caller1 = DelayedCaller::setup(&myFunc1, 123, 45.6);
DelayedCaller* caller2 = DelayedCaller::setup(&myFunc2, "A string");
caller1->call(); // Calls myFunc1(), with arguments 123 and 45.6
caller2->call(); // Calls myFunc2(), with argument "A string"
一种方法是让 DelayedCaller::setup() 接受 std::function,并让我的库用户在调用 setup() 之前使用 std::bind()。但是,有没有办法实现 setup() 以便用户不需要自己进行绑定?
编辑:DelayedCaller 是一个现有的类。setup() 是我想添加的一个新的静态方法。