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