std :: bind参数到没有对象的成员函数

时间:2017-09-26 14:22:05

标签: c++ std-function stdbind

我需要将一个参数绑定到类成员函数。 像这样:

#include <functional>
#include <iostream>

struct test
{
    void func(int a, int b)
    {
        std::cout << a << " " << b << std::endl;
    }
};

int main(int argc, char** argv)
{
    typedef void (test::*TFunc)(int);
    TFunc func = std::bind(&test::func, 1, std::placeholders::_1);
}

但是在这种情况下我有编译错误

error: static assertion failed: Wrong number of arguments for pointer-to
-member

1 个答案:

答案 0 :(得分:4)

std::bind不会产生成员函数指针,但它可以生成一个std::function对象,以后可以使用:

::std::function< void (test *, int)> func = std::bind(&test::func, std::placeholders::_1, 1, std::placeholders::_2);
test t{};
func(&t, 2);