You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unreal Engine中TSharedPtr的动态类型转换替代方案咨询

Unreal Engine中TSharedPtr的动态类型转换方案

你要找的替代std::dynamic_pointer_cast的方法是DynamicCastSharedPtr<To>(const TSharedPtr<From>&),这是Unreal专门为TSharedPtr提供的运行时类型转换函数,转换失败时会返回空的TSharedPtr,完全满足你对运行时类型检查的需求。

用法示例

// 假设BaseClass是基类,DerivedClass是继承自BaseClass的派生类
TSharedPtr<BaseClass> BasePtr = MakeShared<DerivedClass>();
TSharedPtr<DerivedClass> DerivedPtr = DynamicCastSharedPtr<DerivedClass>(BasePtr);

if (DerivedPtr.IsValid())
{
    // 转换成功,可安全调用DerivedClass的成员
    DerivedPtr->DerivedSpecificMethod();
}
else
{
    // 转换失败,BasePtr指向的对象不是DerivedClass类型
}

注意事项

  • 该函数定义在CoreMisc.h头文件中,Unreal项目通常会通过其他核心头文件间接引入,若编译时找不到,可手动添加#include "CoreMisc.h"
  • 对于非UObject类型的转换,要求基类必须包含虚函数(底层依赖C的RTTI);对于UObject类型,则利用Unreal自身的反射系统实现转换,无需额外开启C RTTI
  • 不要和UObject裸指针的Cast<To>(Object*)混淆,DynamicCastSharedPtr是专门针对TSharedPtr的封装

内容的提问来源于stack exchange,提问作者Notrum666

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 06:05:26