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)
如果没有函数指针,哪个可以替代具有类似的行为?
例如,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.
| 归档时间: |
|
| 查看次数: |
1318 次 |
| 最近记录: |