저는 std::static_pointer_cast
, std::const_pointer_cast
및 std::dynamic_pointer_cast
을 std::shared_pointer
에 대해 찾고 있습니다.itk :: SmartPointer의 포인터 캐스트?
ITK의 설명서와 itk::SmartPointer
의 소스 코드를 사용해 보았으며 스마트 포인터 캐스팅에 대해 아무 것도 발견하지 못했습니다.
특별한 경우에 타사 함수에 전달하기 위해 'constness'를 포인터에 추가해야했습니다 (itk::SmartPointer<T>
에서로 변환). 자동으로 생성 된 const 스마트 포인터가 범위를 벗어나면 데이터가 삭제되기 때문에 원시 포인터를 전달하는 것은 문제가되지 않습니다.
유일한 상대적으로 안전 솔루션은 내가 발견
static_cast<itk::SmartPointer<const T>>(itk_smart_pointer_of_t)
합니다.
이 방법이 스레드로부터 안전한지 또는 다른 가능한 함정이 있는지는 알 수 없습니다. 또한, dynamic_cast
의 경우는 더 지저분 해집니다.
ITK에는 네이티브 std::const_pointer_cast
과 같은 캐스트가 없기 때문에 이상하게 보입니다.
그리고 뭘 찾았습니까? 너 뭐 해봤 니? 너는 그걸로 무엇을 할거니? 그리고 그들은 ITK와 어떻게 관련이 있습니까? –
@ JoachimPileborg 제 질문을 편집했습니다. – ostappus