使用派生类中的成员初始化父类中的std::函数

Initialise std::function in parent class using member in derived class

本文关键字:std 函数 父类 初始化 派生 成员      更新时间:2023-10-16

我有一个看起来像这样的父类:

class Parent
{
    Parent(std::function<double(double)> func);
};

和一个看起来像这样的派生类:

class Derived : public Parent
{
    const double val;
    double MyFunc(double x)
    {
        return x / val;
    }
    Derived(double value)
        : Parent(std::function<double(double)>(&Derived::MyFunc)),
          val(value)
    {
    }
};

基本上,我想限制派生类中父类的func。我知道为什么我上面所做的不起作用;我尝试过各种其他的东西,比如制作MyFunc static;然而,这并没有帮助,因为那样我就不能使用value了,这也是有意义的。。。

有什么好方法可以让它发挥作用吗?

谢谢。

更改此

    : Parent(std::function<double(double)>(&Derived::MyFunc)),

    : Parent(std::bind(&Derived::MyFunc, this, std::placeholders::_1)),

除了std::bind,您还可以使用lambda:

Parent([this](int x) { return this->MyFunc(x); })