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

C++: saving derived class in shared_ptr of base class

我想要一个 class 有一个共享指针作为成员:

class MyClass {
public:
    shared_ptr<MyAbstractBaseClass> myPointer;
}

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

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

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

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

如果问题是将 shared_ptr 转换为派生,将 shared_ptr 转换为基数 class,您可以这样做:

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