boost::bind这句话怎么理解?和网上查的不一样
How to understand this boost::bind sentence? It's different from what I searched on Internet
DepthFilter::callback_t depth_filter_cb = boost::bind(&MapPointCandidates::newCandidatePoint, &map_.point_candidates_, _1, _2);
绑定函数定义如下:
void MapPointCandidates::newCandidatePoint(Point* point, double depth_sigma2)
根据bind语句,这个函数应该带3个参数。第一个是 &map_.point_candidates_,然后第二个和第三个捕获其他参数。
但实际上,定义的函数只需要2个参数。而且他们的类型和bind语句不一致。
第一个参数是成员函数的接收者(this)。生成的绑定对象只需要调用成员函数参数,不需要接收者。
然后可以将它传递给接受类似函数但不了解调用对象成员函数的东西 - 例如,std::algorithm.
中的东西
DepthFilter::callback_t depth_filter_cb = boost::bind(&MapPointCandidates::newCandidatePoint, &map_.point_candidates_, _1, _2);
绑定函数定义如下:
void MapPointCandidates::newCandidatePoint(Point* point, double depth_sigma2)
根据bind语句,这个函数应该带3个参数。第一个是 &map_.point_candidates_,然后第二个和第三个捕获其他参数。
但实际上,定义的函数只需要2个参数。而且他们的类型和bind语句不一致。
第一个参数是成员函数的接收者(this)。生成的绑定对象只需要调用成员函数参数,不需要接收者。
然后可以将它传递给接受类似函数但不了解调用对象成员函数的东西 - 例如,std::algorithm.
中的东西