【发布时间】:2015-02-24 06:53:15
【问题描述】:
我有 10 个具有通用名称的函数,它们返回如下引用:
int& function0();
int& function1();
...int& functionN();
如您所见,函数名称中只有一个字母发生了变化。每个功能做不同的工作。我的用例有一定的长度,比如 L,我必须调用从 0 到 L 的函数。所以我想以某种方式生成这些函数名称并调用它们,而不是基于 L 对所有函数调用进行硬编码。所以如果在循环中索引 i 是从 0 到 L,对于我想调用 functioni() 的每个 i。
我尝试的一种方法是将这些函数存储到函数指针数组中,但这不起作用,因为这些函数返回引用并且引用数组是不可能的。我还尝试使用宏连接来生成函数名称,但这也是不可能的,因为宏不能在预处理时替换某些变量的值(MACRO(function,i) 不能替换 i 的值,连接到 functioni)。
我如何在 C++ 中做这样的事情?
【问题讨论】:
-
为什么不把所有这些函数都变成一个函数,将
i作为参数传递,并使用if语句检查i的值,并根据它返回正确的参考。 -
我无法更改函数的代码。
-
然后创建一个新函数,根据
i的值调用这些函数。 -
然后你必须在那个函数中硬编码,你必须检查我传递给函数的内容,然后调用那个函数。请不要提供解决方案。我想知道这样的事情在 C++ 中是否可行,如果可以,怎么办?
-
顺序重要吗?如果你能把它们从 L 调用到 0,你就可以写一个邪恶的 switch 语句。