您应该从定义函数指针的类型开始。类似这样:
typedef double (*FooFunc)(int, const MatrixXd&);
typedef double (*OptimizeFunc)(int, const VectorXd&);
接下来,您可以定义
if
:
FooFunc foo;
OptFunc optimize;
然后在
如果
:
if (opt_choice == 1)
{
optimize = function1;
}
else if (opt_choice == 2)
{
optimize = function2;
}
您从未分配给
foo
在您的第一个代码段中,我不知道在那里分配什么,但它应该分配给一个函数指针,该指针的签名与
FooFunc
类型对于交换机,您可以执行以下操作:
switch (...)
{
case 1: foo = <some function with a FooFunc signature>; break
case 2: foo = <some other function with a FooFunc signature>; break;
// ...etc.
}