通过引用的函数指针数组

Array of function pointer by reference

本文关键字:指针 数组 函数 引用      更新时间:2023-10-16

我知道你可以通过引用传递数组:

void func(T (&arr)[4])
{
    std::cout<<sizeof(arr)/sizeof(arr[0]);
}

,你可以传递一个函数指针数组,如:

void func(void(**run)(int i))
{
    run[0](100);
}
void func(void(*run[4])(int i))
{
    run[0](100);
}

但是你不能在函数指针case(s)上使用sizeof来获取参数数组的大小。

通过引用的函数指针数组的正确语法是什么?

语法将(奇怪地)是:

void func(void (*(&run)[4])(int))

额外的括号是为了消除引用数组中声明的歧义——这在c++中是非法的。

@0x499602D2的答案是正确的,但是您最好花几行来定义您需要的类型:

typedef void (*Func)(int i);
typedef Func FuncArr[4];
void callFuncs(FuncArr& funcs) {
   ...
}

IMHO,这样更容易读。