当基类继承自enable_shared_from_this时,获取指向派生类的共享指针

时间:2010-03-15 20:32:26

标签: c++ boost

我有一个继承自A的B类,后者又来自enabled_shared_from_this。现在,我希望从B的实例获得一个指向B的共享指针。shared_from_this将返回shared_ptr<A>,而不是shared_ptr<B>。我应该在这里使用boost::static_pointer_cast吗?或者有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

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

boost::shared_ptr<B> b = boost::dynamic_pointer_cast<B>(shared_from_this());

答案 1 :(得分:1)

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