std :: function到成员函数

hid*_*yat 32 c++ function-pointers

#include <functional>

struct A
{
    int func(int x, int y)
    {
        return x+y;
    }
};

int main()
{

    typedef std::function<int(int, int) > Funcp;
    A a;
    //Funcp func = std:::bind(&A::func, &a);
    Funcp func = std::bind(&A::func, a, std::placeholders::_1);


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在上述两个绑定函数中都遇到错误:

 error C2825: '_Fty': must be a class or namespace when followed by '::'
Run Code Online (Sandbox Code Playgroud)

语法错误在哪里?我正在使用visual studio 2010

ltj*_*jax 36

Funcp func = std::bind(&A::func, &a, std::placeholders::_1, std::placeholders::_2);

  • 谢谢,占位符变量究竟做了什么? (3认同)
  • 如果你想从`std :: function`的调用站点"传递"参数,它们是必需的.它们允许您重新排列,复制和省略呼叫站点中的参数.在这种情况下,它们是分别填充到"x"和"y"的参数的占位符. (3认同)
  • 无论你是作为一个对象传递还是一个指向bind的指针都没关系,它允许两者兼而有之.当然,在指向本地变量的指针在被调用时将悬空的情况下,这可能是重要的. (2认同)
  • @hidayat占位符是一个神奇的对象,允许您将参数绑定到它们中._1表示第一个参数,_2表示函数的第二个参数. (2认同)