使用派生类中的成员在父类中初始化std :: function

时间:2014-09-06 15:24:45

标签: c++ c++11 derived-class std-function

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

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,这也是有道理的......

是否有一种很好的方法可以使这项工作?

谢谢。

2 个答案:

答案 0 :(得分:3)

更改此

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

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

答案 1 :(得分:2)

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

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