c++ ros message_filters类实例化的三种方式

分为类中实例化与非类中实例化

非类中实例化
方式1
message_filters::Subscriber<sensor_msgs::CompressedImage> image_sub;
image_sub(nh_, cam1_topic_name, 1);

方式2
message_filters::Subscriber<sensor_msgs::CompressedImage> image_sub;
image_sub.subscribe(nh_, cam1_topic_name, 1);

方式3
message_filters::Subscriber<sensor_msgs::CompressedImage> image_sub*;
image_sub = new message_filters::Subscriber<sensor_msgs::CompressedImage>(nh_, cam1_topic_name, 1);

类中实例化
只有方式2不同
方式2
calss A {
public:
    A () {
    }
public:
    message_filters::Subscriber<sensor_msgs::CompressedImage> image_sub;
}
需要关心image_sub在哪里进行实例化?
如何在一个类中定义另一个有参数构造函数的类的对象?
参照https://blog.csdn.net/syb1295306116/article/details/80896306
image_sub这个对象成员的创建是在执行A的构造函数时进行的,A的构造函数后面必须以初始化表的形式为image_sub对象成员提供参数,比如 A( ) : image_sub(nh_, cam1_topic_name, 1) { } 如果在构造函数中不为image_sub提供参数,会发生错误。
类中定义的所有对象(包括基本类型的数据对象、无参类对象等等)的构造都是在此类的初始化列表中进行的,只不过无参和基本类型的对象被省略了。在构造函数体内的所谓初始化,只是给已经生成的对象重新赋值罢了,并没有进行对象的构造。就是说对象构造必须在初始化列表里。这意味着其他类对象的构造先于本类的构造。

猜你喜欢

转载自blog.csdn.net/chengde6896383/article/details/90903527
今日推荐