我有一个功能列表,用户可以从中选择要使用的功能。然后将此函数作为其他函数的参数传递。 例如:
// Declare some functions here
int main() {
// Declare some pointer
int choice;
cout << "1 - functionA, 2 - functionB..." << endl;
cin >> choice;
switch (choice) {
case 1:
// Assign pointer to functionA address
break;
case 2: //etc
// Assign pointer to functionB address
break;
//etc
}
float x; float y; float z;
float value = BigFunc(//ChosenFunction, x, y, z);
cout << value << endl;
return 0;
}
float BigFunc(//ChosenFunction(returns a float), float x, float y, float z) {
// Some code
float a = OtherFunc(//ChosenFunction, x, y, z);
// Some code
return a;
}
float OtherFunc(//ChosenFunction, float x, float y, float z) {
for (//some for loop) {
return b += ChosenFunction(x);
}
return b;
}
我使用了注释来指出某些代码所在的区域。用户可以选择的函数是带有1个浮点参数的函数,对该值执行一些数学运算然后返回它。
我在网上看到了一些例子,但它们都非常具体,并没有给我很多帮助。我试图尽可能保持这篇文章中的例子,以便希望其他偶然发现它的人也可以从中学习。
我试图使用指针来完成这项任务,但它一直无济于事。在线我看到有人使用float (*pointer)(float)
,但我不熟悉使用这样的指针。我也看到人们使用typedef
然而我再一次不确定如何在这里实现它。
任何正确方向的帮助或指针(双关语)都会非常感激! 肖恩。
编辑:这个被标记为重复的问题是类似的,但我之前看过那个问题,我觉得它没有充分解决这个问题。我正在编写的程序比这个案例更复杂,但我保持简单,以便其他人在完成后可以发现这篇文章有用。