如何从参数化基函数生成多个函数指针?

时间:2013-02-20 23:47:12

标签: c++

我有一个基本功能

int base(const int i, const double &x)

在这个函数中,我认为i是一个“参数”(它可以采用从0到N-1的预定义值),而x我认为是实际的“参数”(这可以采取任意值。)

我需要创建一个函数指针数组int (*pointers[N])(const double &x)。数组的每个成员对应于参数i的不同值,因此每个调用pointers[n](x)应该等同于调用base(n, x)

有没有办法实现这个功能?

我一直在努力教育自己有关仿函数的问题(这是一种方法吗?)最近也研究了std::bind但我的理解是它只适用于C ++ 11(我目前无法使用) )。

任何建议或代码段都会非常有用。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用非捕获lambda:

typedef int (*fp)(double);

fp p1 = [](double x) -> int { return base(1, x); };
fp p2 = [](double x) -> int { return base(2, x); };
fp p3 = [](double x) -> int { return base(3, x); };

这不适用于捕获lambdas,因此无法以编程方式生成这些内容。这与C中的每个值拼写一个函数之间基本没有区别:

int f1(double x) { return base(1, x); }
fp p = f1;