gpt4 book ai didi

C++:接受带有一个参数的任何函数的模板?

转载 作者:行者123 更新时间:2023-11-30 02:06:13 24 4
gpt4 key购买 nike

基本上,我希望能够将带有任何参数的 function_A 传递给 T_function,以便 T_function 可以执行一些命令,然后调用传入的函数

这就是我想出的(这可能使我的目标更加明确):

template <typename t_return, typename t_param>
void foo(t_return (*func)(t_param), t_param p)
{
//do code
func(p);
}

foo<void, int>(&someFunc, someInt);

上面的代码效果很好,但看起来很麻烦。我也不确定它有多简单。有更多了解的人有改进吗?我试过在线查找,但事实证明很难搜索到。

最佳答案

您可以将整个函数类型设为模板参数。然后编译器可以使用输入参数推导出模板参数。

template <typename F, typename T>
void foo (F func, const T& p)
{
// do code
func(p);
}

foo(&someFunc, someInt);

这样还有一个好处就是可以支持函数对象。 (这也是标准库(“STL”)支持将函数传递给算法的方式。)

关于C++:接受带有一个参数的任何函数的模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8951545/

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