【问题标题】:C++: saving derived class in shared_ptr of base classC ++:在基类的Shared_ptr中保存派生类
【发布时间】:2015-07-23 22:21:39
【问题描述】:

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

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

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

【问题讨论】:

  • myPointer.reset(new SomethingDerivedFromMyAbstractBaseClass()); 是一种方式。还有其他的。请参阅std::shared_ptr&lt;&gt; 的会员链接了解更多信息。

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


【解决方案1】:

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

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); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-05
    • 2013-02-06
    • 2016-02-24
    • 2018-02-25
    • 1970-01-01
    • 2013-01-04
    • 2019-01-17
    • 2021-06-15
    相关资源
    最近更新 更多