2015-05-12 71 views
0

我想有,有一個共享的指針作爲成員的類的shared_ptr的:C++:儲蓄派生類的基類

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

我怎樣才能讓指針指向一個派生類的實例?

+6

'myPointer.reset(new SomethingDerivedFromMyAbstractBaseClass());'會是一種方法。還有其他人。查看['std :: shared_ptr <>'](http://en.cppreference.com/w/cpp/memory/shared_ptr)的成員鏈接瞭解更多信息。 – WhozCraig

回答

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