我在理解和实施以下问题时遇到一些困难:
在数组中存储一个函数调用,即有一个双精度数组和一个返回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)
对于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
.