将sharet_ptr <Derived>转换为shared_ptr <Base>

时间:2020-07-06 16:10:34

标签: c++ type-conversion shared-ptr

我有一个

class A: public std::enable_shared_from_this<A>{....}

class B: public A{....}

稍后在代码中,我正在这样做:

std::shared_ptr<A> Construct(....){
    class_field=std::make_shared<B>(...);
    
    return class_field->shared_from_this();
}

使用此代码,我要确保一旦破坏了当前类以及客户端函数中的对象超出范围,B的对象就被破坏。

这是正确的处理方式吗?有没有更好的方法可以从shared_ptr获取shared_ptr?

1 个答案:

答案 0 :(得分:2)

shared_from_this的目的是可以从类本身访问共享指针。

您不应在课程之外使用此功能,因此,所涉及的代码简直是过大了。应该是:

std::shared_ptr<A> Construct(....){
    return std::make_shared<B>(...);
}