是否可以将构造函数发送到ros节点订阅?

时间:2017-10-15 08:56:54

标签: c++ boost ros robot

我正在尝试将类构造函数传递给ros 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();

1 个答案:

答案 0 :(得分:1)

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

你可以写一个单独的&#34;工厂功能&#34;创建对象,并将 传递给subscribe,如

udpMsg create_message()
{ return udpMsg(); }