在类中存储typedef构造函数

时间:2017-11-16 11:11:01

标签: c++ class constructor typedef

我想在我的班级中存储一个typedef,我该怎么做?在发布的示例中,我想创建一个类,它允许我使用不同的" Fct"来启动许多对象。参数,例如" one"或者"斜坡",甚至甚至改变一个物体" Fct f"具有设定功能:

typedef double Fct(double);

double one(double x) { return 1; }
double slope(double x) { return x / 2; }

struct myFct : Shape {
    myFct(Fct f)
        :f(f) {}; //"f" is not a nonstatic data member of base class of class "myFct"

private:
    Fct f;
};

1 个答案:

答案 0 :(得分:1)

您的typedef代表功能类型。非常typedef可用于声明成员函数。所以你的类有一个成员函数f 声明。它接受一个double并返回一个double。

我怀疑你想要的是一个函数指针作为成员变量。明确地做:

struct myFct : Shape {
    myFct(Fct *f)
        :f(f) {}; //"f" is not a nonstatic data member of base class of class "myFct"

private:
    Fct *f;
};

你可能会认为自己很幸运,偶然发现了一个有点模糊的特征。