2015-05-12 73 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);