2017-10-15 100 views
1

我想通过一个类构造函数进入ros订阅功能。是否有可能在主题发布时调用构造函数?是否有可能将构造函数发送到ros节点订阅?

 class udpMsg 
    { 
     public: 
     std::string udp; 
     size_t posOfDelim; 
     std::string token; 
     udpMsg(){}; 
     udpMsg(const std_msgs::String::ConstPtr& msg) 
     { 
     udp = std::string(msg->data); 
     posOfDelim = udp.find(delimiter); 
     token = udp.substr(0, posOfDelim); 
     } 
} 

    int main(int argc, char **argv) 
    { 



    ros::init(argc, argv, "listener"); 
    ros::NodeHandle n; 
A_pub = n.advertise<udpubsub::msgA>("Amsg", 1000); 
B_pub = n.advertise<udpubsub::msgB>("Bmsg", 1000); 
udpMsg mainMsg; 
ros::Subscriber sub = n.subscribe("chatter", 1000,mainMsg.udpMsg) 
ros::spin(); 
+0

哪些类型的参数订阅?我怀疑它正在寻找一个回调函数。我猜测它不是一个成员函数,而是一个自由或静态成员函数。 –

回答

0

不,您不能将构造函数作为函数传递。 udpMsg是类本身的名称,而不是函数的名称。

你可以写一个单独的“工厂函数”,创建对象,并通过subscribe,像

udpMsg create_message() 
{ return udpMsg(); } 
相关问题