我有一个函数foo
:
void foo(int n) {}
我希望有一个指向该函数的指针,但是使用指定的参数调用它。所以基本上是这样的:
auto bar = //init
bar(); //calls foo(2)
答案 0 :(得分:4)
您可以使用std::bind
:
auto bar = std::bind(foo, 2);
然后你可以这样称呼它:
bar();
答案 1 :(得分:2)
如果你真的想要一个指针,没有捕获的c ++ 11 lambdas可以转换为像这样的函数指针
#include <iostream>
typedef void(*functype)();
void foo(int n)
{
std::cout << n;
}
int main()
{
functype ptr = [](){foo(2);};
ptr();
return 0;
}