gpt4 book ai didi

c++ - 将可变函数指针分配给 std::function

转载 作者:行者123 更新时间:2023-11-28 05:27:59 25 4
gpt4 key购买 nike

我正在尝试将函数指针传递给 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com