相关疑难解决方法(0)

存储函数及其(任意类型,任意数)参数的简洁方法

对于一个库,我想要一个接受另一个函数及其参数的函数,然后将它们存储起来以便以后调用.参数必须允许任何类型的混合,但函数只需要返回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"
Run Code Online (Sandbox Code Playgroud)

一种方法是让DelayedCaller :: setup()接受一个std :: function,让我的库用户在调用setup()之前使用std :: bind().但是,有没有办法实现setup(),以便用户不需要自己进行绑定?

编辑:DelayedCaller是一个现有的类.setup()是一个我想添加的新静态方法.

c++ variadic c++11

5
推荐指数
2
解决办法
1758
查看次数

标签 统计

c++ ×1

c++11 ×1

variadic ×1