【发布时间】:2012-06-14 12:54:23
【问题描述】:
我的应用程序库需要调用优化例程:
err = optim(int n, double *x, double *f, void *obj)
然后例程将调用目标函数来请求目标函数值。
void obj(int n, double *x, double *f)
optim() 是外部库的一部分。 optim() 和 obj() 的签名是固定的。
函数obj() 需要访问包含在单个对象“模型”中的数据。所有其他函数都传递指向模型对象的指针。因此,运行优化器的调用可能类似于:
err = doOptimize(model)
doOptimize() 将设置问题并致电optim()
err= optim(model->n, model->x, model->f, model->obj)
问题是,除了n、x 和f 之外,obj() 函数能否访问驻留在model 对象中的变量? obj() 函数需要调用其他需要 model 对象来进行实际计算的函数:
updateParms(model);
computeF(model);
我不确定obj() 在没有实际句柄的情况下如何进行这些调用?以下可以工作吗?
updateParms();
computeF();
谢谢,
【问题讨论】:
-
您是指
n、x和f成员以外的数据吗?您能否提供更详细的代码示例,并准确说明您要做什么?
标签: c optimization callback scope nested-function