Соглашение, используемое людьми из Boost Library, - возвращать std::pair
, чтобы выплевывать несколько, возможно, различного типа, результатов.то есть что-то похожее на:
using namespace pcl;
std::pair<PointCloud::Ptr, PointCloud::Ptr> foo(PointCloud::Ptr &input){
...
PointCloud::Ptr output1, output2;
output1 = boost::make_shared<PointCloud>();
output2 = boost::make_shared<PointCloud>();
// fill outputX here
// ...
return std::make_pair(output1, output2);
}
Используя Ptr
, вы избегаете копирования облака точек и просто копируете оболочку boost::shared_ptr
вокруг фактического контейнера данных точек, который намного легче.Вы можете изменить количество выходов, заменив std::pair
на std::tuple
правильного размера.
Это только два способа удовлетворить ваши потребности.Любой другой стандартный контейнер библиотеки также может выполнять эту работу, если возвращаемый набор является однородным, например std::vector<PointCloud::Ptr>
.Выбор за вами ...