【发布时间】:2017-01-24 11:25:50
【问题描述】:
我希望编写一个函数,它使用double 函数的返回值,但是/并且我想在函数调用期间选择这个双精度函数。我的想法是:
#include <iostream>
double linea(double a, double b, double x);
double parabola(double a, double b, double c, double x);
void konjgrad(double (*function)(void** params), void** params);
double linea(double a, double b, double x){
return a*x+b;
}
double parabola(double a, double b, double c, double x){
return a*x*x+b*x+c;
}
void konjgrad(double (*function)(void** params), void** params){
double d;
d=function(params);
std::cout<<d<<std::endl;
}
int main(){
konjgrad(linea(1.6,5.1,2.6));
konjgrad(parabola(2.4,3.1,4,2.6));
return 0;
}
但我陷入了指针的迷宫。有没有人知道如何解决这个问题?
【问题讨论】:
-
无论如何。可能的解决方案范围从使用模板到通过
std::function进行类型擦除。您可以选择更符合您需求的任何一个。 -
konjgrad(linea(1.6,5.1,2.6)); - 你没有传递指向函数的指针,你只是调用函数并传递它的结果
标签: c++ pointers void-pointers