首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将std::shared_ptr<Derived<T>>转换为std::shared_ptr<Base>

可以通过以下方式实现:

  1. 使用std::static_pointer_cast函数进行转换: std::shared_ptr<Derived<T>> derivedPtr = ...; // 原始的std::shared_ptr<Derived<T>>指针 std::shared_ptr<Base> basePtr = std::static_pointer_cast<Base>(derivedPtr);
  2. 这种方式适用于Derived是Base的派生类的情况,可以将Derived类型的指针转换为Base类型的指针。
  3. 使用std::dynamic_pointer_cast函数进行转换: std::shared_ptr<Derived<T>> derivedPtr = ...; // 原始的std::shared_ptr<Derived<T>>指针 std::shared_ptr<Base> basePtr = std::dynamic_pointer_cast<Base>(derivedPtr);
  4. 这种方式适用于Derived是Base的派生类的情况,可以将Derived类型的指针转换为Base类型的指针。与std::static_pointer_cast不同的是,std::dynamic_pointer_cast会在运行时检查指针的类型,如果类型不匹配,则返回空指针。
  5. 使用std::reinterpret_pointer_cast函数进行转换: std::shared_ptr<Derived<T>> derivedPtr = ...; // 原始的std::shared_ptr<Derived<T>>指针 std::shared_ptr<Base> basePtr = std::reinterpret_pointer_cast<Base>(derivedPtr);
  6. 这种方式可以将Derived类型的指针转换为Base类型的指针,但是不会进行类型检查,因此需要确保转换是安全的。

以上是将std::shared_ptr<Derived<T>>转换为std::shared_ptr<Base>的几种常用方式。在实际应用中,根据具体的情况选择适合的转换方式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券