How to use boost::smart_ptr in polymorphism?

前端 未结 1 1379
闹比i
闹比i 2021-02-09 17:01

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:51

    You need to use static_pointer_cast:

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

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

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