C++:将派生类保存在基类的shared_ptr中

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

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

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

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

最佳答案

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

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

关于C++:将派生类保存在基类的shared_ptr中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30201116/

相关文章:

c++ - 为什么在使用临时对象访问时引用类型是左值?

c++ - vptr——虚拟表

java - 多态性的使用?

c++ - 尝试使用 uint*& 作为 const 单元 *& 失败 : invalid initialization of reference of type ‘const uint8_t*&’ from expression of type ‘uint8_t*

c++ - Opencv 示例代码在 Visual Studio 中不起作用

c++ - 调试高内存使用率

c++ - 程序从不打印任何输出

c++ - 枚举基础类型与普通类型

c++ - 引用引用多个对象,怎么可能?

c++ - CRTP和动态多态编译报错