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

问题描述 投票:0回答:1

我正在尝试将类构造函数传递给 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();
c++ boost ros
1个回答
1
投票

不,您不能将构造函数作为函数传递。

udpMsg
是类本身的名称,而不是函数的名称。

您可以编写一个单独的“工厂函数”来创建对象,并将 that 传递给

subscribe
,例如

udpMsg create_message()
{ return udpMsg(); }
© www.soinside.com 2019 - 2024. All rights reserved.