2017-10-15 24 views
1

클래스 생성자를 ros 구독 함수에 전달하려고합니다. 주제가 게시 될 때 생성자를 호출 할 수 있습니까?ros node subscribe에 생성자를 보낼 수 있습니까?

 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

같은 subscribe-이 인수의 유형은 무엇을 구독 할 수 있습니다 전달할 수 있습니다? 나는 그것이 콜백 함수를 찾고 있다고 생각한다. 그리고 그것은 멤버 함수가 아니라 자유 또는 정적 멤버 함수라고 추측합니다. –

답변

0

아니요, 생성자를 함수로 전달할 수 없습니다. udpMsg은 클래스 자체의 이름이며 함수 이름은 아닙니다.

당신은 객체를 생성하는 별도의 "공장"기능을 작성하고

udpMsg create_message() 
{ return udpMsg(); }