0
我想要做以下事情。说我有这样的:从另一个函数创建一个函数(更少的参数)
void f(const char* c) {
// Do stuff with c
}
void g(const char* c, int x, int y) {
// Do other stuff
}
我想要做的是创建g的函数,它接受一个const char * C。即:
int a = 5;
int b = 9;
expression(g, a, b)("Hi!");
优选地,expression(g)
也可以存储在变量中。我不知道如何声明这个变量。
我已经尝试使用boost :: bind;然而boost :: bind返回一个boost :: function,我想要一个普通的C++函数指针。此外,我还看到了这个主题: demote boost::function to a plain function pointer 而前两个解决方案都不会起作用。我的函数f被约束为只有一个参数(无void * user_data指针)。我需要这个的原因是我有第三个函数h,它接受一个参数的函数,即一个const char *并对它进行处理。我希望能够以g的形式传递给h。
h(f) // Valid
h(expression(g, a, b)) // Would like for this to be valid, too
我不确定这是否可能,但如果是,请告诉:)。
我已经尝试绑定,但就像我说的bind :: boost返回一个boost :: function。我想要的是一个正常的C++函数。 – Toan 2013-02-14 01:48:47
@Toan:新增... – 2013-02-14 01:50:31
感谢您的快速回复。我应该更清楚。我希望参数g(你的例子中的5和9)也是参数。也就是说, void t(int a,int b)返回表达式(g,a,b); //返回一个接受const char的函数* } t(3,5)(“Hello”); // g(“Hello”,3,5); – Toan 2013-02-14 02:01:22