如何将函数分配给指向函数的指针的类成员?

时间:2015-02-14 16:38:22

标签: c++ function-pointers

我有一个班级:

struct Twister()
{
   double (*myF)(double x);
}

我已经定义了一个函数:

double Tester(double a)
{
   return 2*a;
}

如何将指针myF指定给值Tester

1 个答案:

答案 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;
};