C++ Std bind相当于lambda,用于将成员函数绑定到Std函数

C++ Std bind相当于lambda,用于将成员函数绑定到Std函数,c++,c++11,stdbind,C++,C++11,Stdbind,我可以使用lambda绑定私有成员函数。我正在努力使用std::bind编写等价的代码。这是我的尝试,但无法编译 #include <functional> class A { private: double foo(double x, double y); public: A(); std::function<double(double,double)> std_functio

我可以使用lambda绑定私有成员函数。我正在努力使用
std::bind
编写等价的代码。这是我的尝试,但无法编译

#include <functional>

class A { 
    private: 
        double foo(double x, double y); 
    public:          
        A(); 
        std::function<double(double,double)> std_function;      
 }; 

A::A() {
    // This works:
    //std_function = [this](double x, double y){return foo(x,y);};

    std_function = std::bind(&A::foo,this,std::placeholders::_1));
} 
#包括
A类{
私人:
双foo(双x,双y);
公众:
A();
std::函数std_函数;
}; 
A::A(){
//这项工作:
//std_函数=[this](双x,双y){return foo(x,y);};
std_function=std::bind(&A::foo,this,std::占位符::_1));
} 

std_函数
应该包含两个参数,但您只指定了一个。请注意,当以后调用
std_函数时,
用于绑定参数

换成

std_function = std::bind(&A::foo, this, std::placeholders::_1, std::placeholders::_2);

啊,我搞错了,我以为占位符是要把它和第一个参数绑定在一起。好的,太好了!非常感谢你!我觉得很遗憾,我花了这么多时间在一个简单的错误上。@WooWapDaBug如果它能帮助你澄清占位符的用法,那也不错。注意,使用lambdas几乎总是更好的选择choice@PasserBy我也这么认为,我实际上是在向某人解释这件事,我想让这个人看看用bind看起来有多丑,但我不能让它与绑定一起工作,因为我总是使用lambda。这是为了举个例子