用C++; < C++中是否可以将函数的参数作为参数传递?我不想只传递函数名。我想传递包含参数的函数名。请注意,我不知道函数接收了多少参数,也不知道类型。这就是为什么我不添加它们作为额外参数的原因。我只需要一个函数调用的引用,我可以按需执行。例如: CallFunction(f(param1, param2)); CallFunction(f){ //do something and then in one moment do: f; // and this calls f(param1, param2) }
但是f没有计算,我只是得到一个函数调用的引用,我可以在需要时计算它,例如:用C++; < C++中是否可以将函数的参数作为参数传递?我不想只传递函数名。我想传递包含参数的函数名。请注意,我不知道函数接收了多少参数,也不知道类型。这就是为什么我不添加它们作为额外参数的原因。我只需要一个函数调用的引用,我可以按需执行。例如: CallFunction(f(param1, param2)); CallFunction(f){ //do something and then in one moment do: f; // and this calls f(param1, param2) },c++,function,parameters,C++,Function,Parameters,但是f没有计算,我只是得到一个函数调用的引用,我可以在需要时计算它,例如: CallFunction(f(param1, param2)); CallFunction(f){ //do something and then in one moment do: f; // and this calls f(param1, param2) } 这是C++中实现的方法吗?先谢谢你 接受任何可调用函数作为第一个参数 使用可变模板并接受任意数量的任何类型的参数 使用完美的转发 使用std::bi
CallFunction(f(param1, param2));
CallFunction(f){
//do something and then in one moment do:
f; // and this calls f(param1, param2)
}
<>这是C++中实现的方法吗?先谢谢你
使用
std::bind
的完整示例:
#include <iostream>
#include <functional>
void f(int p1, int p2) {
std::cout << "In f(" << p1 << "," << p2 << ")\n";
}
template <typename F>
void CallFunction(F f)
{
std::cout << "Start CallFunction\n";
f();
std::cout << "End CallFunction\n";
}
int main()
{
CallFunction(std::bind(f, 2, 3));
}
#包括
#包括
空f(整数p1,整数p2){
std::cout您有几种选择
一种是创建一个包装器闭包,它将封装对函数的调用。这样做的好处是,您可以在必要时转换函数的输出
做一个简单的包装器与使用前面提到的std::bind
完全相同
#include <functional>
#include <iostream>
void CallFunction(std::function<void(void)> f) {
f();
}
int main() {
auto closure = [](int a, int b) {
std::cout << a << ", " << b << std::endl;
};
auto wrapper = [closure]() {
closure(1, 2);
};
CallFunction(wrapper);
CallFunction(std::bind(closure, 3, 4));
return 0;
}
#包括
#包括
void调用函数(std::函数f){
f();
}
int main(){
自动关闭=[](int a,int b){
std::cout.@songyuanyao是否有可能以字符串形式获取调用信息,例如,正在调用的函数的bañe?对不起,什么是bañe
?也许CallFunction
可以接受模板化的callable并调用它而不带参数。然后,调用方只需传递一个不接受任何参数的lambda即可,调用时,调用f(arg1,arg2,…)
。