1

我有一个基本功能

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(我目前无法使用)。

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

4

1 回答 1

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

这不适用于捕获 lambda,因此您无法以编程方式生成它们。这与为 C 中的每个值拼出一个函数之间基本上没有区别:

int f1(double x) { return base(1, x); }
fp p = f1;
于 2013-02-20T23:55:24.210 回答