类内使用new - shijiwensjw/C-learning GitHub Wiki

类内初始化变量new用法正确错误用法

错误情况:

在类的成员变量中直接定义变量并同时进行初始化。由于此变量为shared_ptr类型变量,所以需要new来为其实例化,分配空间。 Private:   PointCloudPtr cloud_ (new PointCloud); 出现错误

错误原因:

由于类是抽象的概念,在定义类的过程中不能存在分配空间等实例化的操作。否则便于类的抽象形式的概念相矛盾。

正确操作:

  1. 先定义变量:PointCloudPtr cloud_;
  2. 再在类的构造函数时对其进行new实例化: CameraStream() : nh("~"), cloud_(new PointCloud) {}