반응형
boost :: shared_ptr이있는 static_cast?
static_cast
with에 해당하는 것은 무엇입니까 boost::shared_ptr
?
즉, 다음을 어떻게 다시 작성해야합니까?
Base* b = new Derived();
Derived* d = static_cast<Derived*>(b);
사용할 때 shared_ptr
?
boost::shared_ptr<Base> b(new Derived());
boost::shared_ptr<Derived> d = ???
사용 boost::static_pointer_cast
:
boost::shared_ptr<Base> b(new Derived());
boost::shared_ptr<Derived> d = boost::static_pointer_cast<Derived>(b);
이 스마트 포인터 세 캐스트 운영자는 다음과 같습니다 static_pointer_cast
, dynamic_pointer_cast
그리고 const_pointer_cast
. 네임 스페이스 boost
(에서 제공 <boost/shared_ptr.hpp>
) 또는 네임 스페이스 std::tr1
(Boost 또는 컴파일러의 TR1 구현에서 제공)에 있습니다.
주석으로 : Derived가 실제로 Base에서 파생 된 경우 정적 캐스트가 아닌 dynamic_pointer_cast를 사용해야합니다. 시스템은 캐스트가 정확하지 않은 경우를 감지 할 수 있습니다.
Boost에서 제공하는 캐스팅 연산자의 수와 TR1의 구현에 차이가 있다는 점을 언급 할 가치가 있습니다.
TR1은 세 번째 연산자 const_pointer_cast ()를 정의하지 않습니다.
참고 URL : https://stackoverflow.com/questions/624854/static-cast-with-boostshared-ptr
반응형
'IT TIP' 카테고리의 다른 글
업데이트 된 Docker 이미지를 Amazon ECS 작업에 배포하려면 어떻게해야합니까? (0) | 2020.10.26 |
---|---|
Windows / C # 개발을위한 임베드 가능한 Webkit 구성 요소가 있습니까? (0) | 2020.10.26 |
C # 언어 이름의 유래 (0) | 2020.10.26 |
WeakHashMap은 있지만 WeakSet은없는 이유는 무엇입니까? (0) | 2020.10.26 |
Chrome JavaScript 디버깅-페이지 새로 고침 또는 코드를 통한 중단 사이에 중단 점을 저장하는 방법은 무엇입니까? (0) | 2020.10.26 |