在功能之间切换的最佳(或标准)方式是什么?

What is the best (or standard) way of switching between functions?

下面的C++代码是我想做的简化版,只是为了展示大概的结构。

在“primary_function()”的每种情况下,结构都是相同的:

函数() + 2

唯一改变的是所使用的函数(函数 1、2、3 或 4)。

有没有更有效的方法来做到这一点,这样我就不会在每种情况下都“重复”代码?谢谢。

#include <iostream>

using namespace std;

int function1(int a){
    return a;
}

int function2(int b){
    return b*b;
}

int function3(int c){
    return c*c + c;
}

int function4(int d){
    return 5*d;
}

int primary_function(int x, int selection){

    switch(selection){
        case(1):
            return function1(x) + 2;
            break;
        case(2):
            return function2(x) + 2;
            break;
        case(3):
            return function3(x) + 2;
            break;
        case(4):
            return function4(x) + 2;
            break;
    }
}



int main(){

    cout << primary_function(6,1) << endl;
    cout << primary_function(6,2) << endl;
    cout << primary_function(6,3) << endl;
    cout << primary_function(6,4) << endl;
    
    return 0;
}

您可以使用函数指针数组,如下所示:

int primary_function(int x, int selection) {

    using fn_ptr_t = int (*)(int);
    static fn_ptr_t functions[] = {
        function1,
        function2,
        function3,
        function4
    };

    return functions[selection - 1](x) + 2;
}

您还可以使用 std::function<int(int)> 作为数组的项类型,这样您就可以在数组中使用 lambda,而不仅仅是命名函数,即使有闭包。