C++ C+中的模板函数+;?也许不是正确的术语

C++ C+中的模板函数+;?也许不是正确的术语,c++,function,templates,declaration,C++,Function,Templates,Declaration,我不确定我是否使用了正确的术语,但我很好奇是否有更有效的方法来做事情。我有一个文件加载器,可以处理许多片段(总共大约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,

我不确定我是否使用了正确的术语,但我很好奇是否有更有效的方法来做事情。我有一个文件加载器,可以处理许多片段(总共大约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个不同的函数声明


谢谢

我不确定这是否是您想要做的,但是:

您必须单独声明和定义所有函数,但可以将函数指针存储在数组中

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]);
}
这样就可以通过如下索引调用它们:

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]);
}

用于(int i=0;i可以使用函数指针调用具有不同名称和相同签名的函数。或者,您可以选择使用模板函数和专用模板函数。

取决于这些函数的功能。。它们是做类似的工作,还是完全不同?我感到困惑的一点是您希望为文件的第三个“片段”调用“
fragment\u 03
”,但是您也传递了
fragment\u num
,因此可能不会这样做?如果不是,也许可以使用更好的名称?无论哪种方式,请给我们一些这些函数的示例,我们可以为您提供一个好的解决方案:-).你可能真的想回顾一下这个设计,它让你拥有了30个基本上相同名称和参数的不同函数…我建议renaming@EvanTeran它们做的事情非常不同。我只是好奇是否有一种方法可以根据fragment_x这样的东西来声明它们——如果这没有意义的话。我道歉。如果它们o“非常不同的东西”,为什么它们的名称都一样?这是我的问题-可能你会在你的电脑上找到答案。你还可以为函数类型(不仅仅是函数指针)创建一个typedef,这将使声明许多相同的函数变得更容易。但这对定义没有帮助。