gpt4 book ai didi

具有可变数量和类型的参数的 C++ 函数作为另一个函数的参数

转载 作者:行者123 更新时间:2023-12-05 00:44:47 27 4
gpt4 key购买 nike

我想创建一个调用另一个函数并打印其参数的函数。
它应该与具有多种参数变量组合的许多函数(返回相同的结果)兼容。

我想要这样的东西:

int fun1(){}
int fun2(int i){}
int fun3(std::string s, int i){}

void execute_and_print(std::function f, ...)
{
///code
}

int main()
{
execute_and_print(&fun1);
execute_and_print(&fun2, 3);
execute_and_print(&fun3,"ff",4);
}

它可以打印:

executed function with arguments:
executed function with arguments: 3
executed function with arguments: ff, 4

在 C++ 中甚至可能吗?

最佳答案

在 C++17 中非常简单

template <typename F, typename... Args>
void execute_and_print(F f, Args... args)
{
(std::cout << ... << args);
f(args...);
}

在此之前还有额外的仪式

template <typename F, typename... Args>
void execute_and_print(F f, Args... args)
{
int dummy[] = { (static_cast<void>(std::cout << args), 0)... };
f(args...);
}

关于具有可变数量和类型的参数的 C++ 函数作为另一个函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65886397/

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