【发布时间】:2018-04-19 22:48:19
【问题描述】:
我有一个这样的代码部分。
if (opt_choice == 1){
double (*foo)(int , const MatrixXd& );
double (*optimize)(double (*)(int, const MatrixXd&)) = function1;}
else if (opt_choice == 2){
double (*foo)(int , const VectorXd& );
double (*optimize)(double (*)(int, const VectorXd&)) = function2;}
我打算根据用户输入使用相同的函数指针(此处为优化)指向不同的函数。同样,我还有另一个函数指针 foo,它根据用户的选择采用不同的参数。 foo 稍后被分配给不同的函数。
switch (....)
case 1: foo = someFunction; break; // error : foo is not declared in this scope
case 2: foo = someFunction2; break;
...
最后,我希望使用它们各自的函数指针来调用它们。
optimize(var1,foo); // error : optimize is not declared in this scope
正如您可能已经猜到的那样,编译器会在这里抛出一个错误,因为 foo 和 optimize 不在作用域内,因为它们是在 if 语句中声明的。
有什么方法可以实现吗?也就是说,将 foo 和 optimize 保持在范围内,直到程序结束。 谢谢。
【问题讨论】:
-
当我想做这样的事情时,我将它分配给一个变量。
-
您需要在
if和else之外定义函数指针,并将它们设置在if或else内。 -
我不明白这个问题。随心所欲地处理任何变量?
-
类型必须在编译时知道,你不能这样做。
标签: c++ pointers scope function-pointers