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);
我想要一个 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);