【问题标题】:No suitable user-defined conversion from std::shared_ptr to std::shared_ptr exists [duplicate]不存在从 std::shared_ptr 到 std::shared_ptr 的合适的用户定义转换 [重复]
【发布时间】:2021-08-03 20:06:18
【问题描述】:

我正在尝试将 std::shared_ptr<Node> 转换为 std::shared_ptr<Node3D>

auto node3d = static_cast<std::shared_ptr<Node3D>>(node);

我遇到了一个错误:

E0312 no suitable user-defined conversion from "std::shared_ptr&lt;Node&gt;" to "std::shared_ptr&lt;Node3D&gt;" exists

【问题讨论】:

  • 如果您提供更多背景信息(例如minimal reproducible example),您的问题将会得到改善。特别是,NodeNode3D 之间的关系缺失。
  • 这有点重复,但标题使用了向下转换,这阻碍了人们找到它。

标签: c++ shared-ptr smart-pointers static-cast


【解决方案1】:

试试std::static_pointer_cast

std::static_pointer_cast<Node3D>(node)

【讨论】:

    猜你喜欢
    • 2011-09-13
    • 2018-02-25
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 2015-10-14
    • 2012-09-01
    • 2017-08-06
    相关资源
    最近更新 更多