我有两个类 A 和 B,B 继承自 A。
如果我有 shared_ptr<A>
我知道的对象实际上是 B 子类型,我如何执行动态转换来访问 B 的 API(记住我的对象是 shared_ptr,而不仅仅是 A?
最佳答案
如果您只想调用 B
中的函数您可以使用以下之一:
std::shared_ptr<A> ap = ...;
dynamic_cast<B&>(*ap).b_function();
if (B* bp = dynamic_cast<B*>(ap.get()) {
...
}
如果您真的想获得 std::shared_ptr<B>
来自 std::shared_ptr<A>
,你可以使用使用
std::shared_ptr<B> bp = std::dynamic_pointer_cast<B>(ap);
关于c++ - 跨shared_ptr的dynamic_cast?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23795265/