ROS: subscribe function does not recognize my callback method

Orca Ninja picture Orca Ninja · Feb 26, 2012 · Viewed 7.6k times · Source

I am receiving this error "error: no matching function for call to ‘ros::NodeHandle::subscribe(const char [24], int, <unresolved overloaded function type>)’

This is my call back function in my class BangBangControlUnit

// on message reciept: 'current_maintained_temp' void current_maintained_temp_callback(const std_msgs::Int32::ConstPtr& msg){ temp_to_maintain = msg->data;
}

and this is how i am using subscribe in my main function

// subscribe to 'current_maintained_temp' ros::Subscriber current_maintained_temp_sub = n.subscribe("current_maintained_temp", 1000, control.current_maintained_temp_callback);

can someone tell me what i did wrong?

Answer

Miguel Prada picture Miguel Prada · Mar 6, 2012

The proper signature for creating a subscriber with a class method as callback is as follows:

ros::Subscriber sub = nh.subscribe("my_topic", 1, &Foo::callback, &foo_object);

So in your case you should use:

current_maintained_temp_sub = n.subscribe("current_maintained_temp", 1000, &BangBangControlUnit::current_maintained_temp_callback, &control);

You can read more about publishers and subscribers in C++ here.