C++ Std bind相当于lambda,用于将成员函数绑定到Std函数
我可以使用lambda绑定私有成员函数。我正在努力使用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
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。这是为了举个例子