【发布时间】:2012-11-05 07:30:27
【问题描述】:
我正在使用我的c++ 代码中的c 库。他们的API 要求我传递具有给定签名的某个函数指针。假设它类似于以下内容:
typedef int (*api_fun_t)(int);
我想要做的是传递依赖于在运行时确定的某些参数的函数指针。最初我想定义如下内容:
api_fun_t my_specialized_fun(int param){
int fun(int x){
// decide what to do based on param
}
return fun;
}
但问题c++ 不允许嵌套函数定义。接下来我想我可以通过如下模板来实现这一点
template <int param>
fun (int x){
//decide what to do based on param
}
还有其他不涉及全局和/或静态变量的方法吗?
【问题讨论】:
-
函数指针数组怎么样?
-
@Nick 这行不通,因为参数仅在运行时确定,所以我无法列出数组中所有可能的函数
-
但我无法将函子传递给
c库!它只理解api_fun_t类型的对象。我基本上可以在一个类中实现嵌套函数。问题是参数和类方法都需要是静态的...... -
如果你不能使用 C++ 模板也不行。
-
我正在使用
c++并且可以使用模板!我只是想知道是否有办法做到这一点。
标签: c++ function templates function-pointers