Лямбда функции и указатели на функции в классе

У меня есть класс, в котором есть указатель на некую функцию. Функция должна по умолчанию иметь реализацию, но с помощью например setFunc() можно изменить указатель.

Вот пример кода

class A {
private:
    int (*func)(int value) = [](int value) { return value + 1; };

    int (*funcTest)(int value) = [](int value) {return func(value) + 1; };
public:
    void setFunc(int (*other)(int)) {
        this->func = other;
    }
    void setFuncTest(int (*other)(int)) {
        this->funcTest = other;
    }
    A() { }
    void test() {
        int t = 10;
        int s = func(t);
        cout << s << endl;
    }
};

Сначала проблема была с вызовом func из funcTest, но я вроде нашел решение и переписал эту строчку: int (*funcTest)(int value) = [&](int value) {return func(value) + 1; };,

но появилась проблема: не существует подходящей функции преобразования из "lambda []int (int value)->int" в "int (*)(int value)"

Подскажите пожалуйста как правильно реализовать, то что мне требуется. И буду благодарен если, кто нибудь поделится ссылкой на источник, в котором понятным языком рассказывается о лямбда функциях и подобной теме.


Ответы (1 шт):

Автор решения: Harry

А почему бы не сделать, например, так?

class A {
private:

    function<int(int)> func = [](int value) { return value + 1; };

    function<int(int)> funcTest = [&](int value) {return func(value) + 1; };

public:
    void setFunc(function<int(int)> other) {
        func = other;
    }
    void setFuncTest(function<int(int)> other) {
        funcTest = other;
    }
    A() { }

    void test() {
        int t = 10;
        int s = func(t);
        cout << s << endl;
    }
};
→ Ссылка