许多 PCL 接口只接受shared_ptr<T>
参数(例如boost::shared_ptr< PointCloud>
)。[旁白:就是这样boost::shared_ptr
,不是std::shared_ptr
另一个问题,但应该在即将发布的版本中修复。]
通常,此类接口对于需要管理对象生命周期并防止共享引用对象超出范围的多线程应用程序是一个有效的选项。但是,PCL 不一定在这样的上下文中使用,并且此 API 强制人们在堆上创建许多对象只是为了支持这种 API 样式(并且总是检查nullptr
)。
为什么会这样,我还缺少另一个理由吗?
对于本地对象,我现在需要创建一个shared_ptr
带有自定义nop删除器对象的对象,以便将其传递给算法。
(如果有更好的论坛可以问这个问题,请lmk。)