ROS: la funzione di sottoscrizione non riconosce il mio metodo di richiamata
-
13-11-2019 - |
Domanda
Sto ricevendo questo errore "Errore: nessuna funzione di corrispondenza per la chiamata a ‘ros::NodeHandle::subscribe(const char [24], int, <unresolved overloaded function type>)’
Questa è la mia funzione di richiamata nella mia classe BangbangControlunit
// on message reciept: 'current_maintained_temp'
void current_maintained_temp_callback(const std_msgs::Int32::ConstPtr& msg){
temp_to_maintain = msg->data;
}
Ed è come sto usando Iscriviti nella mia funzione principale
// subscribe to 'current_maintained_temp'
ros::Subscriber current_maintained_temp_sub = n.subscribe("current_maintained_temp", 1000, control.current_maintained_temp_callback);
Qualcuno può dirmi cosa ho fatto di sbagliato?
Soluzione
La firma corretta per la creazione di un abbonato con un metodo di classe come callback è il seguente:
ros::Subscriber sub = nh.subscribe("my_topic", 1, &Foo::callback, &foo_object);
.
Quindi nel tuo caso dovresti usare:
current_maintained_temp_sub = n.subscribe("current_maintained_temp", 1000, &BangBangControlUnit::current_maintained_temp_callback, &control);
.
Puoi leggere ulteriori informazioni su editori e abbonati in C ++ qui .