2017-10-15 91 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(); } 
相關問題