通过引用将函数作为参数传递给另一个函数(C ++菜鸟)

时间:2011-09-26 11:05:17

标签: function reference arguments pass-by-reference

我无法将函数作为参数传递给另一个函数。我知道这已经在这里得到了解决,但我会感激一点,因为我没有成功。我试图根据我的需要调整这个例子:

C++:How to pass reference-to-function into another function?

我正在尝试让我的代码更具可读性。我有大量的代码,而且很多都是重复的。例如:

CreateDatabaseEntry( A_key, name_vector, name_vector2, dimension, "_mySuffix" );
CreateDatabaseEntry( B_key, name_vector, name_vector2, dimension, "_mySuffix" ); ...

假设我在当前主文件中有26个这样的调用,分别用于B_key,C_key等。我想将这种东西移到单独的“帮助器”文件中的函数(helper.cpp / h) )。例如,进入CreateDatabaseEntries()。

问题

这是我的问题。我必须将CreateDatabaseEntry传递给CreateDatabaseEntries。每次调用CreateDatabaseEntry都会使用不同的参数(例如,A_key,然后是B_key,依此类推)。我已尝试在上面提供的链接中使用该示例。但我得到“没有匹配的函数调用”错误。我的猜测是,如果我只调用一个CreateDatabaseEntry,我就不会出错。因为我可以在CreateDatabaseEntries的定义中硬编码“A_key”。问题似乎是我无法概括CreateDatabaseEntries的定义来获取A_key,B_key,C_key等等。

此外,这只是一个简单的表示。实际上,我想创建几个“伞形”函数,比如CreateDatabaseEntries,不仅可以使用任意的A_key,B_key,...,还可以使用任意的name_vector和其他参数。

我是菜鸟,有可能我正在咆哮错误的树。如果我的解释对任何人都有意义,也许有一种完全不同的方式我可以做到这一点?如果是这样,那么了解它会很棒。感谢。

1 个答案:

答案 0 :(得分:1)

发送功能似乎很奇怪。 m0skit0说,参数传递确实更好。

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

想象一下:

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

for (i = 0; i < 5; ++ i)
    myFunc(paramList[i]);

很明显,在你的情况下,如果你有超过1个参数,你就会成对...但是我认为你明白这一点。

如果您决定更改参数类型,您可以在参数上使用多态(或切换到模板),除非您想将其全部保留为C.