Многие интерфейсы PCL принимают только shared_ptr<T>
аргументы (например, boost::shared_ptr< PointCloud>
). [В сторону: это оно boost::shared_ptr
и не std::shared_ptr
это еще одна проблема, но она должна быть исправлена в следующих версиях.]
Обычно такие интерфейсы являются допустимым вариантом для многопоточных приложений, где необходимо управлять временем жизни объектов и предотвращать выход объектов общих ссылок из области видимости. Тем не менее, PCL не обязательно используется в таком контексте, и этот API заставляет создавать много объектов в куче только для поддержки этого стиля API (и всегда проверять наличие nullptr
).
Есть ли другое объяснение, которое я пропускаю, почему это так?
Для локальных объектов мне теперь нужно создать shared_ptr
с обычаем NOP Удалить объект, чтобы просто передать его алгоритмам.
(Если есть лучший форум, чтобы задать этот вопрос, пожалуйста, lmk.)
Задача ещё не решена.
Других решений пока нет …