我有一个继承自A的B类,后者又来自enabled_shared_from_this
。现在,我希望从B的实例获得一个指向B的共享指针。shared_from_this
将返回shared_ptr<A>
,而不是shared_ptr<B>
。我应该在这里使用boost::static_pointer_cast
吗?或者有更好的方法吗?
答案 0 :(得分:1)
我认为在这种情况下更优选使用boost::dynamic_pointer_cast;
boost::shared_ptr<B> b = boost::dynamic_pointer_cast<B>(shared_from_this());
答案 1 :(得分:1)
这似乎是一种有效的方法,因为在编译时已知类型。