我不确定我是否使用了正确的术语但我很好奇是否有更有效的做事方式。我有一个文件加载器,处理大量的片段(总共约30个)。我的课堂上乱七八糟地说:
void fragment_03(char* location, int frag_num);
void fragment_04(char* location, int frag_num);
void fragment_05(char* location, int frag_num);
void fragment_06(char* location, int frag_num);
......等等。有没有更好的方法以更通用的方式声明这些函数,而不是写出30个不同的函数声明?
谢谢!
答案 0 :(得分:1)
我不确定这是否是您想要做的,但是:
您必须单独声明和定义所有函数,但可以将函数指针存储在数组中。
typedef void (fragment_function) (char* location, int frag_num);
frag_function fragment_0, fragment_1, fragment_2; //define functions in cpp file
fragment_function *fragment [] =
{
fragment_0,
fragment_1,
fragment_2
};
然后像这样定义它们:
void fragment_0(char* location, int frag_num) { /**your definition here*/ }
因此可以通过索引调用它们:
for(int i=0; i<3; i++)
{
fragment[i](frag_location[i], frag_num[i]);
}
答案 1 :(得分:0)
可以使用函数指针调用具有不同名称和相同签名的函数。或者您可以选择具有模板化功能和专用模板功能。