我有一个看起来像这样的父类:
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
,这也是有道理的......
是否有一种很好的方法可以使这项工作?
谢谢。
答案 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); })