ROS: Подписаться Функция не распознает мой метод обратного вызова

StackOverflow https://stackoverflow.com/questions/9449699

Вопрос

Я получаю эту ошибку «Ошибка: Нет соответствующей функции для вызова для ‘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 ++ здесь .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top