将指向函数的指针作为参数传递 - C ++

时间:2014-11-03 15:59:15

标签: c++ function pointers typedef

我有一个功能列表,用户可以从中选择要使用的功能。然后将此函数作为其他函数的参数传递。 例如:

// 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然而我再一次不确定如何在这里实现它。

任何正确方向的帮助或指针(双关语)都会非常感激! 肖恩。

编辑:这个被标记为重复的问题是类似的,但我之前看过那个问题,我觉得它没有充分解决这个问题。我正在编写的程序比这个案例更复杂,但我保持简单,以便其他人在完成后可以发现这篇文章有用。

0 个答案:

没有答案