代码之家  ›  专栏  ›  技术社区  ›  Nikhil

当基类从“启用共享”继承时,获取指向派生类的共享指针

  •  3
  • Nikhil  · 技术社区  · 15 年前

    我有一个B类继承自A,而A又继承自 enabled_shared_from_this . 现在,我想从B的一个实例中得到一个指向B的共享指针。 shared_from_this 将返回 shared_ptr<A> 不是 shared_ptr<B> . 我应该用吗? boost::static_pointer_cast 在这里?还是有更好的方法?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Sergey Teplyakov    15 年前

    我认为在这种情况下更适合使用 boost::dynamic_pointer_cast ;

    boost::shared_ptr<B> b = boost::dynamic_pointer_cast<B>(shared_from_this());
    
        2
  •  1
  •   Nikhil    15 年前

    这似乎是一种有效的方法,因为类型在编译时是已知的。