C++ C++;将用户定义的函数传递给另一个函数

C++ C++;将用户定义的函数传递给另一个函数,c++,function,parameters,C++,Function,Parameters,我正在尝试编写一个函数(我们称之为函数a),它可以接收一个用户定义的函数作为输入(例如,一个用户定义的函数,它接受任意数量的变量并返回一个整数——我们称之为函数B)。我想将函数B作为函数a的参数传递,只需修改函数B中的一些变量,并从函数a中调用函数B 我想我可以通过创建函数B的变量指针并在每次调用时修改指针来实现这一点,但是我不知道如何创建它,因此如果要传递给函数B的变量数量未知,我可以从函数A中调用函数B 有人对如何将用户指定的函数作为参数传递给另一个函数有什么建议吗?您需要的是指向函数的指针

我正在尝试编写一个函数(我们称之为函数a),它可以接收一个用户定义的函数作为输入(例如,一个用户定义的函数,它接受任意数量的变量并返回一个整数——我们称之为函数B)。我想将函数B作为函数a的参数传递,只需修改函数B中的一些变量,并从函数a中调用函数B

我想我可以通过创建函数B的变量指针并在每次调用时修改指针来实现这一点,但是我不知道如何创建它,因此如果要传递给函数B的变量数量未知,我可以从函数A中调用函数B


有人对如何将用户指定的函数作为参数传递给另一个函数有什么建议吗?

您需要的是指向函数的指针

例如,传递一个函数,该函数接受一个
int
并返回一个double

 #include <iostream>
 double B(int x)    // sample function that we call
 {
      return x*42.0;
 }

 void A(double (*f)(int))
 {
     for (int i = 0; i < 25; ++i)
        std::cout << f(i) << '\n';
 }

 int main()
 {
    A(B);
 }
#包括
double B(int x)//我们调用的示例函数
{
返回x*42.0;
}
无效A(双(*f)(整数))
{
对于(int i=0;i<25;++i)

STD::CUT< P>因为您提到了可以修改函数B中的变量,函数指针不是一个好的选择,特别是当C++引入可调用对象时,或者<代码> STD::函数< /C> >,通过构造一个运算符<代码>()的类
重载,您可以将此类的对象视为对象和函数指针


另一种选择是C++11中引入的lambda。您只需编写
[A_variable_1,A_variable_2](自动参数){您的代码}
在A中使用变量,在B中使用您自己的变量。

简短回答:您不能。当您调用B时,您必须传递一些参数。更改这些参数需要更改源代码,这意味着重新编译。如果您真的需要可变数量的参数,您可能需要编写B来接受类似于para向量的内容仪表。如果类型可能不同,则可能需要类似于
std::vector