If you just want to call a function from B
you can use one of these:
std::shared_ptr<A> ap = ...;
dynamic_cast<B&>(*ap).b_function();
if (B* bp = dynamic_cast<B*>(ap.get()) {
...
}
In case you actually want to get a std::shared_ptr<B>
from the std::shared_ptr<A>
, you can use use
std::shared_ptr<B> bp = std::dynamic_pointer_cast<B>(ap);