【发布时间】:2015-08-08 02:16:03
【问题描述】:
问题:
我在这里搜索了一段时间,寻找一种方法来循环遍历命名为variable_1、variable_2、....、variable_n 的变量。基本上,我在问是否有办法使用循环来实现variable_i,或者更具体地说,在我的情况下,functionName_i。
我需要什么:我正在尝试循环一个对象的数组来调用不同的函数,这些函数按顺序命名并与对象的数组平行(即:obj[ i ]->callback_i ( ) )
我知道的:显然,这里的答案(如果只是变量)是使用数组或向量。但是,如果可能的话,我需要以某种方式按顺序连接函数的名称。
可能的解决方法:我想到的一切都可以追溯到创建函数指针的数组/向量。如果我真的别无选择,我可能最终会让它发挥作用,但我只是想出于好奇而问。
明确的问题:有没有办法使用变量 int i 作为函数名称的一部分来循环按顺序命名的函数?
谢谢!
【问题讨论】:
-
没有。使用函数指针数组。
-
要做你想做的事,需要使用反射,这是 C 中通常不支持的功能。
-
您可以根据您的系统执行此操作。例如,如果您在 Windows 上,您可以将函数放在
extern "C"块中,并使用__declspec(dllexport)导出它们,然后按名称(使用运行时字符串值)将它们加载到带有 @987654321 的函数指针中@。我想你可以在 Linux 或 Mac 上做类似的事情,但我不知道这个过程。 -
您可以将函数与“运行时名称”相关联,例如
std::map<std::string, std::function<void()>>? -
@Galik 您的意思是将函数的名称存储为键并将其指针存储为值?这根本不是一个坏主意,实际上......它仍然存储函数的指针和所有内容,但这是一种非常巧妙的方式
标签: c++ arrays reflection concatenation