函数C ++的指针数组

时间:2014-11-20 15:39:11

标签: c++ arrays function pointers

我有3个具有相同签名的功能。我需要用指向函数的指针初始化一个数组。 我有:

typedef void(*sorting_func) (int* a, int n);

和功能:

class Sortings {
public:
    static void bubble_sort(int a[], int n);
    static void bubble_aiverson_1(int a[], int n);
    static void bubble_aiverson_2(int a[], int n);
};

我需要一个带有指针的数组,如下所示:

Sortings::array[0]...

功能可以不是静态的。

1 个答案:

答案 0 :(得分:2)

您可以使用vector std::function,即

std::vector<std::function(void(int*,int)>> sortingFunctions;

然后,根据具体情况,您可以直接推回自由函数,或使用lambda按以下方式推回成员函数:

//Capturing `this` in the lambda implies the vector is a member of the class
//Otherwise, you must capture an instance of the class you want to call the 
//function on.
std::function<void(int*,int)> myMemberFunction = [this](int* a, int n){
    this->memberFunction(a,n);
}

sortingFunctions.push_back(myMemberFunction);

假设您在Sorting类的成员函数中创建了向量。

See a live example here