我有一个班级:
struct Twister()
{
double (*myF)(double x);
}
我已经定义了一个函数:
double Tester(double a)
{
return 2*a;
}
如何将指针myF
指定给值Tester
?
答案 0 :(得分:1)
"如何为指针myF指定值Tester ??"
只需在您的类构造函数的成员初始化列表中:
double Tester(double a){ return 2*a;}
class Twister {
public:
double(*myF)(double x);
Twister() : myF(Tester) {}
};
同样为了封装,你应该创建myF
成员变量private
,并提供一个构造函数来初始化函数指针成员:
class Twister {
double(*myF)(double x);
public:
Twister(double(*f)(double)) : myF(f) {}
};
使用它像:
Twister twister(Tester);
此外,如果要在typedef
的生命周期内更改函数指针,可以提供setter函数(和Twister
,以便于编写):
class Twister {
public:
typedef double(*FnPtrType)(double);
Twister(FnPtrType f) : myF(f) {}
void setMyF(FnPtrType f) { myF = f; }
private:
FnPtrType myF;
};