C ++:在基类的shared_ptr中保存派生类

时间:2015-05-12 20:47:42

标签: c++ c++11 polymorphism shared-ptr

我希望有一个具有共享指针作为成员的类:

1
2
3
7-10
15
20-25

如何使指针指向派生类的实例?

1 个答案:

答案 0 :(得分:2)

如果问题是关于分配一个普通的派生指针,你所要做的就是:

struct B { };
struct D : B { }; 

D *pd = new D; 
shared_ptr<B> sp(pd); 

如果问题是将shared_ptr转换为派生到shared_ptr到基类,你可以这样做:

shared_ptr<D> spd = make_shared<D>(); 
shared_ptr<B> sp = static_pointer_cast<B>(spd);