我正在尝试将函数指针传递给 std::function 参数。这是更大代码的一部分。我想知道是否可以这样做?据我所知,std::function 可从函数指针分配。
#include <functional>
#include <iostream>
template<typename R, typename ...Args>
void storeFun(std::string funcName, std::function<R(Args...)> funcPtr){
std::cout << funcPtr(2);
}
template<typename R, typename ...Args, typename funcType>
void storeFun2(std::string funcName,funcType funcPtr){
std::function<R(Args...)> f22 = funcPtr;
std::cout << f22(2);
}
int fun1(int a){
return a;
}
int main(){
storeFun("fun1",fun1);
storeFun2("fun1",fun1);
return 0;
}
最佳答案
你需要让你的函数指针可推导:
template<typename R, typename ...Args>
void storeFun(std::string funcName, R (*funcPtr)(Args...)){
std::function<R(Args...)> f22 = funcPtr;
std::cout << f22(2);
}
storeFun("fun1",fun1);
或者您可以使用显式参数调用它:(如果 fun1
过载并且您不想将其static_cast
转换为所需的类型,则很有用)
storeFun<int, int>("fun1",fun1);
关于c++ - 将可变函数指针分配给 std::function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40142353/