c++ - 在类中存储 typedef 构造函数

标签 c++ class constructor typedef

我想弄清楚在我的类中存储一个 typedef,我该怎么做?在发布的示例中,我想创建一个类,它允许我启动多个具有不同“Fct”参数的对象,例如“one”或“slope”,甚至可以使用 set 函数更改对象的“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;
};

最佳答案

您的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;
};

您可能认为自己很幸运,偶然发现了一个有点晦涩的功能。

关于c++ - 在类中存储 typedef 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47328156/

相关文章:

c++ - iPad/X 平台上的 OpenGL ES 应用 : C++ or Objective-C?

c++ - Visual Studios 能否用于在 C++ 中进行开发并仍然创建能够在 Mac 上运行的程序?

java - Java 中的构造函数覆盖

c++ - 将固定长度的字符数组分配给字符串

c++ - 如何在调整大小时保持相同的场景部分可见?

java - 作业: how to invoke a java method

excel - 为什么 VBA 中的每个类都有一个 Application 属性?

java - 如何确定Container模板类

c++ - 具有部分特化的类模板参数推导

dependency-injection - 使用 StructureMap 时传递构造函数参数