传递C+的名称+;函数通过两个嵌套函数执行 我对C++非常陌生,我现在正致力于这个问题。

传递C+的名称+;函数通过两个嵌套函数执行 我对C++非常陌生,我现在正致力于这个问题。,c++,C++,基本上,我有三个功能,我正在使用。目标是将函数名作为参数传递给主函数。然后,主函数将函数的名称传递给次函数。在次函数内部,最终调用传递其名称的函数。下面是代码的大致情况,我无法让它工作,因为在sub_fun中调用它时,它希望它是subfun(…) double my_函数(double&x,const double&y){ ... } int sub_fun(std::function my_function){ ... my_函数(arg1、arg2); ... } int big_fun(s

基本上,我有三个功能,我正在使用。目标是将函数名作为参数传递给主函数。然后,主函数将函数的名称传递给次函数。在次函数内部,最终调用传递其名称的函数。下面是代码的大致情况,我无法让它工作,因为在sub_fun中调用它时,它希望它是subfun(…)

double my_函数(double&x,const double&y){
...
}
int sub_fun(std::function my_function){
...
my_函数(arg1、arg2);
...
}
int big_fun(std::function my_function){
...
sub_fun(我的功能,…);
...
}
int main(){
大乐趣(我的功能)
}
我还在学习指针/引用,所以我很确定我可能犯了一个错误。如果我解释得不够好,请让我知道,并提前感谢您的帮助

子功能(我的功能,…)是一个问题
sub_fun
需要1个参数。你不能用更多的论点来称呼它。如果您更改
sub_-fun(我的函数,…)
子功能(我的功能)它可以工作:

#include <functional>

double my_function(double& x, const double& y){
    return x + y;
}

int sub_fun(std::function<double(double&, const double&)> my_function){
    double arg1 = 0, arg2 = 0;
    my_function(arg1, arg2);
    return 0;
}

int big_fun(std::function<double(double&, const double&)> my_function){
    sub_fun(my_function);
    return 0;
}

int main() {
    big_fun(my_function);
}

您也可以使用可变函数代替可变模板,但可变模板功能更强大且更易于使用。

问题是什么?这意味着什么:“当在sub_fun中调用它时,它希望它是subfun(…)。”如果您将big_-fun和sub_-fun中的参数
my_函数
更改为其他名称,可能会有所帮助—这样您就不会将其与实际的
my_函数
函数混淆。您目前显示的此代码结构还可以。要获得错误帮助,您需要实际发布获得错误的真实代码。
sub_fun(my_函数,…)是一个问题
sub_fun
需要1个参数。你不能用更多的论点来称呼它。您想要一个变量函数/模板和参数转发吗?如果您更改
sub_-fun(我的函数,…)
子功能(我的功能)它可以工作:
#include <functional>

double my_function(double& x, const double& y){
    return x + y;
}

int sub_fun(std::function<double(double&, const double&)> my_function){
    double arg1 = 0, arg2 = 0;
    my_function(arg1, arg2);
    return 0;
}

int big_fun(std::function<double(double&, const double&)> my_function){
    sub_fun(my_function);
    return 0;
}

int main() {
    big_fun(my_function);
}
#include <functional>

double my_function(double& x, const double& y){
    return x + y;
}

template<typename ...Ts>
int sub_fun(std::function<double(double&, const double&)> my_function, Ts ...args){
    my_function(args...);
    return 0;
}

int big_fun(std::function<double(double&, const double&)> my_function){
    double arg1 = 0, arg2 = 0;
    sub_fun(my_function, arg1, arg2);
    return 0;
}

int main() {
    big_fun(my_function);
}