Инициализация 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 ответа
Изменить это
: Parent(std::function<double(double)>(&Derived::MyFunc)),
в
: Parent(std::bind(&Derived::MyFunc, this, std::placeholders::_1)),
В качестве альтернативы std::bind
Вы можете использовать лямбду:
Parent([this](int x) { return this->MyFunc(x); })