调用函数而不指定参数的函数指针

时间:2016-04-12 15:04:42

标签: c++ pointers function-pointers

我有一个函数foo

void foo(int n) {}

我希望有一个指向该函数的指针,但是使用指定的参数调用它。所以基本上是这样的:

auto bar =  //init
bar(); //calls foo(2)

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;
}