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

Is it possible to send a constructor into ros node subscribe?

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

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

您可以单独编写一个创建对象的 "factory function",然后将 that 传递给 subscribe,例如

udpMsg create_message()
{ return udpMsg(); }