How to use boost::bind() for callback member function in C++
I'm trying to wrap my node neatly inside a class. Callbacks are generally a problem to be a member data. There is a plethora of solutions. One of them is to use std::bind
or boost::bind
. I'm trying to use it for subscribe() but it yields an error.
class NodeListener
{
private:
void chatterCallback(const std_msgs::String::ConstPtr& msg);
ros::Subscriber sub;
}
..........
void NodeListener::chatterCallback(const std_msgs::String::ConstPtr& msg)
{
cout << this->i << endl;
}
void NodeListener::ros_init(...)
{
sub = m_nh->subscribe("chatter",1000,boost::bind(&NodeListener::chatterCallback,this,_1));
}
This is the error I'm getting
error: no matching function for call to 'ros::NodeHandle::subscribe(const char[8],int,boost::_bi::bind_t<...>
Has subscribe()
been modified so it longer accepts this syntax? Notice: this solution works just fine
sub = m_nh->subscribe("chatter",1000,&NodeListener::chatterCallback,this);