我有一个基本功能
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(我目前无法使用) )。
任何建议或代码段都会非常有用。谢谢!
答案 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;