IT TIP

boost :: shared_ptr이있는 static_cast?

itqueen 2020. 10. 26. 21:38
반응형

boost :: shared_ptr이있는 static_cast?


static_castwith에 해당하는 것은 무엇입니까 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

반응형