函数调用为数组元素

use*_*802 0 c++ function

我在理解和实施以下问题时遇到一些困难:

在数组中存储一个函数调用,即有一个双精度数组和一个返回double的函数....我想在调用例如数组元素时,让我们说myArray [0],它应该调用函数myArray,返回一个double.

double myFunction(){return mydouble}

double myArray[3];
...
cout<<myArray[2]<<endl; <- should call myFunction and return "mydouble"
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 5

对于C++查找std::function,对于C,请阅读有关函数指针的更多信息.

函数指针也可以在C++中使用,但不像它那样灵活std::function.

C++解决方案:

struct MyStruct
{
    double myStructFunction() { return 2.0; }
};

std::function<double()> myArray[3];

MyStruct myStructure;

myArray[0] = []() { return 1.0; };
myArray[1] = std::bind(&MyStruct::myStructFunction, myStructure);
myArray[2] = myFunction;

for (int i = 0; i < 3; i++)
    std::cout << "Calling `myArray[" << i << "]` : " << myArray[i]() << '\n';
Run Code Online (Sandbox Code Playgroud)

用于myArray[0]查找lambda函数myArray[1]赋值,以及查找赋值std::bind.