当前位置: 首页 > news >正文

UE中的Cast和CastChecked

        UE中的 Cast 方法有两种常见的形式:Cast<ToType>(Object)CastChecked<ToType>(Object)

1. Cast<ToType>(Object)

        这是一种安全的类型转换方法,如果转换成功,它返回一个非空的指针或引用,否则返回 nullptr。这种类型的转换主要用于处理基类和派生类之间的关系。

AActor* MyActor = ...; 
AMyCharacter* MyCharacter = Cast<AMyCharacter>(MyActor); 
if (MyCharacter) { // 转换成功,可以使用 MyCharacter 对象 
} 
else {// 转换失败,MyActor 不是 AMyCharacter 类型的对象 
}

2. CastChecked<ToType>(Object)

        这是一种类似的类型转换方法,但它在转换失败时会引发断言(Assertion),因此更适合在开发和调试阶段使用。在运行时,如果转换失败,它会触发断言并在编辑器中停止程序执行。

AActor* MyActor = ...;
AMyCharacter* MyCharacter = CastChecked<AMyCharacter>(MyActor); 
// 如果转换失败,这里会引发断言并停止程序执行

示例:

        考虑一个基类 AAnimal 和两个派生类 ADogACat 的情况:

class AAnimal : public AActor { 
// ... 
}; 
class ADog : public AAnimal { 
// ... 
}; 
class ACat : public AAnimal { 
// ... 
};

        在代码中,你可以使用 Cast 方法进行类型转换:

AAnimal* Animal = ...;ADog* Dog = Cast<ADog>(Animal);
if (Dog)
{// 对象成功转换为 ADog 类型
}
else
{// 对象不是 ADog 类型
}ACat* Cat = CastChecked<ACat>(Animal); // 这里会引发断言,因为 Animal 不是 ACat 类型

        这样,你可以根据需要在不同的类之间进行安全的类型转换。确保在实际使用中考虑到可能的类型转换失败的情况。

相关文章:

  • 「云原生可观测团队」获选「InfoQ 年度技术内容贡献奖」
  • day38WEB攻防-通用漏洞XSS跨站绕过修复http_onlyCSP标签符号
  • 【Nginx】nginx入门
  • 一个 SpringBoot 项目能同时处理多少请求?
  • jmeter-03界面介绍
  • [SWPUCTF 2021 新生赛]Do_you_know_http
  • 红队打靶练习:PHOTOGRAPHER: 1
  • 使用No-SQL数据库支持连接查询用例的讨论
  • HarmonyOS远程真机调试方法
  • 品牌如何营造生活感氛围?媒介盒子分享
  • 列式数据库、行式数据库简介
  • 韦达定理用处多
  • Python爬虫urllib详解
  • 微服务-微服务Alibaba-Nacos 源码分析 (源码流程图)-2.0.1
  • JAVA面试题之三分布式和微服务的区别是什么?
  • 分享一款快速APP功能测试工具
  • Android框架之Volley
  • CentOS7简单部署NFS
  • CSS盒模型深入
  • docker python 配置
  • JavaScript学习总结——原型
  • JSDuck 与 AngularJS 融合技巧
  • nodejs调试方法
  • react-native 安卓真机环境搭建
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • vue总结
  • 创建一种深思熟虑的文化
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 分布式任务队列Celery
  • 解析 Webpack中import、require、按需加载的执行过程
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 项目实战-Api的解决方案
  • 在weex里面使用chart图表
  • 从如何停掉 Promise 链说起
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​力扣解法汇总946-验证栈序列
  • #{} 和 ${}区别
  • (3)(3.5) 遥测无线电区域条例
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (南京观海微电子)——COF介绍
  • (十八)三元表达式和列表解析
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)Sql Server 保留几位小数的两种做法
  • (转)Unity3DUnity3D在android下调试
  • (转载)Linux 多线程条件变量同步
  • (转载)PyTorch代码规范最佳实践和样式指南
  • **PHP二维数组遍历时同时赋值
  • .aanva
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net 生成二级域名
  • .net 提取注释生成API文档 帮助文档
  • .NET/C# 的字符串暂存池
  • .Net7 环境安装配置
  • .NET是什么
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理