函数名生成和C++调用

Abh*_*han 2 c++ macros function

我有10个函数,通用名称返回引用,如:

int& function0();
int& function1();
...int& functionN();
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,函数名称中只有一个字母发生了变化.每个功能都有不同的工作.我的用例给出了一些长度,比如L,我必须调用从0到L的函数.所以我想以某种方式生成这些函数名称并调用它们而不是硬编码基于L的所有函数调用.所以如果在循环中索引i从0到L,对于每个我想调用functioni().

我尝试过的一种方法是将这些函数存储到函数指针数组中,但这不起作用,因为这些函数返回引用并且引用数组是不可能的.我也尝试使用宏连接来生成函数名,但这也是不可能的,因为宏不能在预处理时替换某些变量的值(MACRO(函数,i)不替换i的值,连接到functioni).

我怎么能用C++做这样的事情?

eml*_*lai 5

这在C++中是不可能的,但在你的情况下,一个函数指针数组似乎是一个很好的解决方案:

typedef int& (* functionPtr)();
functionPtr functions[N];
// or without typedef: int& (* functions[N])();
functions[0] = foo; // assign a function named foo to index 0
int& i = functions[0](); // call function at index 0
Run Code Online (Sandbox Code Playgroud)