我有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]...
功能可以不是静态的。
答案 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
类的成员函数中创建了向量。