How to use boost::smart_ptr in polymorphism?

前端 未结 1 1476
伪装坚强ぢ
伪装坚强ぢ 2021-02-09 17:18

Boost smart pointers can be used with polymorphism, but how do you cast the subclass back to the pointer?

using namespace boost;
// ...
shared_ptr

        
相关标签:
1条回答
  • 2021-02-09 17:40

    You need to use static_pointer_cast:

    struct B { virtual ~B() { } };
    struct D : B { };
    
    shared_ptr<B> bp(new D);
    shared_ptr<D> dp(static_pointer_cast<D>(b));
    

    (There are also dynamic_pointer_cast and const_pointer_cast for performing dynamic and const casts respectively.)

    0 讨论(0)
提交回复
热议问题