Function 通过引用将函数作为参数传递给另一个函数(C+;+;新手)

Function 通过引用将函数作为参数传递给另一个函数(C+;+;新手),function,reference,arguments,pass-by-reference,Function,Reference,Arguments,Pass By Reference,我无法将函数作为参数传递给另一个函数。我知道这个问题已经在这里得到了解决,但我希望能得到更多的帮助,因为我没有成功。我已尝试根据自己的需要调整此示例: 我正在努力使我的代码更具可读性。我有大量的代码,其中很多是重复的。例如: CreateDatabaseEntry( A_key, name_vector, name_vector2, dimension, "_mySuffix" ); CreateDatabaseEntry( B_key, name_vector, name_vector2,

我无法将函数作为参数传递给另一个函数。我知道这个问题已经在这里得到了解决,但我希望能得到更多的帮助,因为我没有成功。我已尝试根据自己的需要调整此示例:

我正在努力使我的代码更具可读性。我有大量的代码,其中很多是重复的。例如:

CreateDatabaseEntry( A_key, name_vector, name_vector2, dimension, "_mySuffix" );
CreateDatabaseEntry( B_key, name_vector, name_vector2, dimension, "_mySuffix" ); ...
假设我在当前的主文件中有26个这样的调用,每个调用一个用于B_键、C_键等。我想将这类东西移动到单独的“helper”文件(helper.cpp/h)中的函数。例如,输入CreateDatabaseEntries()

问题

这是我的问题。我必须将CreateDatabaseEntries传递到CreateDatabaseEntries。对CreateDatabaseEntry的每次调用都采用不同的参数(例如,一个_键,然后是B_键,等等)。我已经尝试在上面提供的链接中使用该示例。但我得到“没有匹配的函数调用”错误。我的猜测是,如果我只调用一个CreateDatabaseEntry,就不会出现错误。因为我可以在CreateDatabaseEntries的定义中硬编码“A_key”。问题似乎是,我无法将CreateDatabaseEntries的定义概括为采用A_键、B_键、C_键或其他任何键

而且,这只是一个简单的表示。实际上,我想创建几个“伞式”函数,比如CreateDatabaseEntries,它不仅可以接受任意的A_键、B_键,…,还可以接受任意的名称_向量和其他参数


我是一个新手,很可能我完全找错了方向。如果我的解释对任何人都有意义的话,也许有一种完全不同的方式我可以做到这一点?如果是这样的话,知道这件事就太好了。谢谢。

发送函数似乎很奇怪。正如m0skit0所说,参数传递确实更好

为什么不创建一个参数数组,然后使用循环传递每一行? 应该更简单,您不需要担心指针或内存分配(当然,这取决于函数的参数和内部机制)

想象一下:

int paramList [5] = { 0, 2, 4, 6, 8 };

for (i = 0; i < 5; ++ i)
    myFunc(paramList[i]);
int参数列表[5]={0,2,4,6,8};
对于(i=0;i<5;++i)
myFunc(参数列表[i]);
很明显,在你的例子中,如果你有一个以上的参数,你会配对。。。但我想你明白了


如果在任何时候您决定更改参数类型,您都可以在参数上使用多态性(或切换到模板),除非您希望保留所有参数C。

如果您想要的是可变数量的参数,我宁愿传递一个可变大小的缓冲区以及元素数作为参数。例如,如果您知道您的函数将接受整数,但我不知道有多少,您可以这样做:
void myfunction(int*intbuffer,unsigned int-how-many-int)
。我不知道这是否正是你想要的。谢谢。我不知道缓冲区是什么,但我会调查的!函数myfunction将始终采用相同数量和类型的整数/向量(或其他)。只有特定的整数/向量不同。缓冲区只是一个保留内存区域。例如,如果你想说5个整数:
int*buffer=newint[5];缓冲区[0]=11;缓冲区[1]=21;缓冲区[2]=23;缓冲区[3]=34;缓冲区[4]=534;myfunction(缓冲区,5);删除[]缓冲区