Я ищу что-то вроде std::static_pointer_cast
, std::const_pointer_cast
и std::dynamic_pointer_cast
для std::shared_pointer
.Указатели для itk :: SmartPointer?
Я пробовал документацию ITK и исходный код itk::SmartPointer
и ничего не нашел о умении умного указателя.
В одном конкретном случае мне нужно было добавить «константу» к указателю (конвертировать itk::SmartPointer<T>
в itk::SmartPointer<const T>
), чтобы передать его третьей стороне. Передача необработанного указателя не может быть и речи, потому что данные будут удалены после того, как автоматически созданный const-указатель будет удален из области видимости.
Единственное относительно безопасное решение я нашел:
static_cast<itk::SmartPointer<const T>>(itk_smart_pointer_of_t)
.
Я не знаю, является ли этот подход потокобезопасным или имеет другие возможные подводные камни. Более того, в случае dynamic_cast
все станет еще более грязным.
Кажется странным, что у ITK нет родных std::const_pointer_cast
-like и других отливок.
И что вы нашли? Что вы пробовали? Что вы собираетесь делать с этими вещами? И как они относятся к ITK? –
@JoachimPileborg Я отредактировал мой вопрос. – ostappus