通过引用C++传递函数数组



一个文件(比如file1.h(中有多个函数。这些函数的定义和返回值相似。文件本身,不允许更改。我想简化它们如下:

file1.h

int func1 (void)
{
return 11;
}
int func2(void)
{
return 12;
}
int func3(void)
{
return 13;
}

在我允许更改的源文件中,我想创建一个函数数组,然后通过引用另一个函数来传递这个数组,这里的代码也被简化了:

源文件.cpp

static int func_main(const int idx, int* arr_of_func)
{
int ret = 0;
switch (idx)
{
case 1:
ret = arr_of_func[0];
break;
case 2:
ret = arr_of_func[1];
break;
case 3:
ret = arr_of_func[0];
break;
default:
ret = -1;
break;
}
return ret;
}
int main()
{
std::cout << "Hello World!n";
int x = 0;
cin >> x;
int (*arr[3])(void) = {func1, func2, func3};
cout << func_main(x, *arr);
system("pause");
}

通过调用函数func_main(x,*arr(,我不知道如何传递数组(第二个参数(。我需要你的帮助。谢谢

func_main参数int* arr_of_func更正为函数指针数组int (*arr_of_func[3])()。默认情况下,数组是通过引用传递的。
#include <string>
#include <functional>
#include <iostream>
int func1 (void)
{
return 11;
}
int func2(void)
{
return 12;
}
int func3(void)
{
return 13;
}
static int func_main(const int idx, int (*arr_of_func[3])())
{
int ret = 0;
switch (idx)
{
case 1:
ret = arr_of_func[0]();
break;
case 2:
ret = arr_of_func[1]();
break;
case 3:
ret = arr_of_func[2]();
break;
default:
ret = -1;
break;
}
return ret;
}
int main()
{
std::cout << "Hello World!n";
int x = 0;
std::cin >> x;
int (*arr[3])(void) = {func1, func2, func3};
std::cout << func_main(x, arr);
system("pause");
}

最新更新