ROS: функция подписки не распознает мой метод обратного вызова - PullRequest
2 голосов
/ 26 февраля 2012

Я получаю эту ошибку "ошибка: нет функции сопоставления для вызова ‘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;<br> }

и вот как я использую подписку в моей основной функции

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

Может кто-нибудь сказать мне, что я сделал не так?

1 Ответ

7 голосов
/ 06 марта 2012

Подходящая подпись для создания подписчика с методом класса в качестве обратного вызова выглядит следующим образом:

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 ++ здесь .

...