使用参数化函数c ++

luc*_*one 2 c++ function-pointers function

说我有一个C++函数

int foo(int x, int y){
   return x+y ;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法创建此功能的"参数化"版本?

我的意思是从foo()开始我想定义y固定为特定值的函数指针,相当于创建函数foo2(),如下所示:

int foo2(int x){
  return foo(x,2);
}
Run Code Online (Sandbox Code Playgroud)

如果没有函数指针,哪个可以替代具有类似的行为?

Jon*_*Jon 6

您可以使用修复(或咖喱)函数参数std::bind.

例如,foo2可能是

auto foo2 = std::bind(foo, std::placeholders::_1, 2);
Run Code Online (Sandbox Code Playgroud)

你可以这样读:

调用foo2就像调用foo第一个参数是foo2调用的第一个参数,第二个参数是调用2.

可以使用lambda函数完成:

auto foo2 = [] (int x) { return foo(x, 2); }
Run Code Online (Sandbox Code Playgroud)

见上文的实际操作.

最后,如果你不能使用C++ 11那么就是等价的boost::bind.