ROS: Подписаться Функция не распознает мой метод обратного вызова
-
13-11-2019 - |
Вопрос
Я получаю эту ошибку «Ошибка: Нет соответствующей функции для вызова для ‘ros::NodeHandle::subscribe(const char [24], int, <unresolved overloaded function type>)’
Это мой обратно обратно в моем классе Bangbangcontrolunit
// on message reciept: 'current_maintained_temp'
void current_maintained_temp_callback(const std_msgs::Int32::ConstPtr& msg){
temp_to_maintain = msg->data;
}
И вот как я использую подписаться в мою основную функцию
// subscribe to 'current_maintained_temp'
ros::Subscriber current_maintained_temp_sub = n.subscribe("current_maintained_temp", 1000, control.current_maintained_temp_callback);
Может кто-нибудь сказать мне, что я сделал не так?
Решение
надлежащая подпись для создания абонента с методом класса как обратный вызов следующим образом:
ros::Subscriber sub = nh.subscribe("my_topic", 1, &Foo::callback, &foo_object);
.
Так что в вашем случае вы должны использовать:
current_maintained_temp_sub = n.subscribe("current_maintained_temp", 1000, &BangBangControlUnit::current_maintained_temp_callback, &control);
.
Вы можете узнать больше о издателях и подписчиках в C ++ здесь .