Std绑定等效于lambda,用于将成员函数绑定到std函数

时间:2018-02-23 10:43:14

标签: 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_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));
} 

1 个答案:

答案 0 :(得分:2)

std_function应该采用2个参数,但您只需指定一个参数。请注意,placeholders用于在稍后调用std_function时绑定的参数。

将其更改为

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