【发布时间】:2012-05-28 19:25:39
【问题描述】:
我确定以前有人问过这个问题,但是很难搜索... 所以,我得到的是一个接受函数指针的函数。这个函数指针有 3 个参数。所以,我想传递给另一个函数,相同的指针,但填充了 2 个参数。
所以,是这样的:
int func1 (int (*funcptr)(int, int, int)) {
return func2(funcptr(,8,9));
}
int func2 (int (*funcptr)(int)) {
return (*funcptr)(2);
}
编辑: 好的,所以我现在使用 lambda 得到了这个
int func2(int (*funcptr2)(int)) {
return (*funcptr2)(2);
}
int func1(int (*funcptr1)(int, int, int)) {
return func2(
[funcptr1](int i)->int {
return (*funcptr1)(i,8,9);
}
);
}
但它给了我
“无法将参数 1 的 func1(int (*)(int, int, int))::<lambda(int)> 转换为 int (*)(int) 到 int func2(int (*)(int))”
【问题讨论】:
-
见
std::bind(也在boost) -
也可以看到“完美转发”(你可以google一下)。 C++11 标准为您的案例提供了完美的转发。
标签: c++ function pointers lambda function-pointers