Std bind 相当于 lambda,用于将成员函数绑定到 std 函数
Std bind equivalent to lambda for binding a member function to a std function
我可以使用 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));
}
std_function
应该采用 2 个参数,但您只指定了一个。请注意,placeholders 用于稍后调用 std_function
时要绑定的参数。
改为
std_function = std::bind(&A::foo, this, std::placeholders::_1, std::placeholders::_2);
我可以使用 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));
}
std_function
应该采用 2 个参数,但您只指定了一个。请注意,placeholders 用于稍后调用 std_function
时要绑定的参数。
改为
std_function = std::bind(&A::foo, this, std::placeholders::_1, std::placeholders::_2);