C ++ std :: bind () Параметр функции-члена - PullRequest
0 голосов
/ 31 марта 2020

Я хочу использовать std::function функции-члена и предоставлять ее через возвращаемое значение. Каков синтаксис std::bind(...) для этого?

class Test{
    int move(int x){
        return x * Y;
    }
    std::function<int(int)> getFunc(){
        std::function<int(int)> tmp2 = std::bind(&Test::move, _1, this);
        return tmp2;
    }
};

Ответы [ 2 ]

4 голосов
/ 31 марта 2020

Это должно быть std::bind(&Test::move, this, _1);.

Альтернативой является лямбда:

std::function<int(int)> tmp2 = [this](int i) { return move(i); };
2 голосов
/ 31 марта 2020

Во-первых, вы должны изменить положение this и _1 при переходе на std::bind. Во-вторых, Test::move должно вернуть int.

class Test{
    int move(int x){
       return ...; 
    }

    std::function<int(int)> getFunc(){
        using namespace std::placeholders;
        std::function<int(int)> tmp2 = std::bind(&Test::move, this, _1);
        return tmp2;
    }
};
...