【问题标题】:storing typedef constructor in class在类中存储 typedef 构造函数
【发布时间】:2018-04-29 21:40:03
【问题描述】:

我正在想办法在我的班级中存储一个 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 double Fct(double); 是指typedef double Fct; 还是前向函数声明? 在我的班级中存储 typedef 是什么意思?
  • 它有什么问题?请提供minimal reproducible example,因为我收到与您的问题无关的错误(Shape 未声明)
  • 没有“存储 typedef”之类的东西。 typedef 为类型定义了一个新名称。
  • 也许你想要一个函数指针(Fct *f;),你可以用f = one;等设置。
  • 非常感谢您如此迅速地提供帮助,使用指针可以解决问题。

标签: c++ class constructor typedef


【解决方案1】:

您的typedef 代表函数类型。那很typedef 可以用来声明成员函数。所以你的类有一个成员函数f声明。它接受一个双精度并返回一个双精度。

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

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

private:
    Fct *f;
};

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

【讨论】:

  • 非常感谢,我尽量把这个问题问的比较笼统,但是作为非计算机专业的人,有时连问对的问题都很难,你完全理解,非常感谢!
  • @PhilippSiedler - 你做了一个不清楚条款的人能做的最好的事情。那就是显示代码。如果一张图片值一千字……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多