shared_ptr<char>
을 shared_ptr<unsigned char>
으로 변환하는 좋은 방법이 있습니까?표준을 변환 :: shared_ptr <char> std :: shared_ptr <부호없는 문자>
나는 다음을 생각해 냈지만 매우 깨끗해 보이지 않았다.
int main(int argc, char** argv)
{
std::shared_ptr<char> p1 = std::make_shared<char>();
std::shared_ptr<unsigned char> p2 = std::shared_ptr<unsigned char>(
reinterpret_cast<unsigned char*>(p1.get()),
[p1](unsigned char*) {});
}
원래 나는 람다 캡쳐를 이해하지 못했고 버그가 있다고 생각했지만, 생각해 본 결과 나는 없을 것이라고 생각합니다. 사실, 이것은 'reinterpret_pointer_cast'보다 더 복잡하고 보편적 인 해결책으로 보입니다. 사실,'reinterpret_pointer_cast'는 나쁜 생각처럼 보입니다. 그것은 한 수준의 재 해석만을 제거합니다. 여러 레벨의 포인터 (예 :''*** char')가 있다면, 더 세분화 된 트릭이 필요할 상황을 만듭니다. 반면에 람다 캡처는 그러한 시나리오에서보다 균일하게 적용될 수 있습니다. – grovkin