用C++; < C++中是否可以将函数的参数作为参数传递?我不想只传递函数名。我想传递包含参数的函数名。请注意,我不知道函数接收了多少参数,也不知道类型。这就是为什么我不添加它们作为额外参数的原因。我只需要一个函数调用的引用,我可以按需执行。例如: CallFunction(f(param1, param2)); CallFunction(f){ //do something and then in one moment do: f; // and this calls f(param1, param2) }

用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

但是f没有计算,我只是得到一个函数调用的引用,我可以在需要时计算它,例如:

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,…)