我想做以下事情。说我有这个:
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
我不确定这是否可能,但如果是,请告诉:)。