news 2026/4/16 16:09:46

游戏开发中 C++ 枚举的正确用法:必须用 `enum class`

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
游戏开发中 C++ 枚举的正确用法:必须用 `enum class`

在 Unreal Engine 或其他 C++ 游戏项目中,枚举常用于表示角色状态、技能类型、网络状态等。必须使用enum class,原因如下:

1. 避免命名冲突(关键!)

游戏系统多,不同模块可能定义相同名称的状态:

// ❌ 传统 enum:编译失败enumPlayerState{Idle,Attack};enumAIState{Idle,Patrol};// 错误:Idle 重定义// ✅ enum class:安全隔离enumclassEPlayerState{Idle,Attack};enumclassEAIState{Idle,Patrol};// 合法EPlayerState player=EPlayerState::Idle;EAIState ai=EAIState::Idle;// 无歧义

2. 类型安全,防止逻辑错误

游戏逻辑依赖状态判断,隐式转换易引发 bug:

enumclassEGameState{Paused=0,Running=1,GameOver=2};voidUpdate(){if(CurrentState==EGameState::GameOver){ShowGameOverUI();}// 不会因意外将状态当作数字运算(如 CurrentState + 1)}

3. 内存优化(对性能敏感)

游戏对象数量庞大,节省每个字节都很重要:

// 默认底层类型为 int(4 字节)// 显式指定为 uint8_t(1 字节),适合同步和存储UENUM(BlueprintType)enumclassECharacterAnim:uint8_t{WalkUMETA(DisplayName="Walking"),RunUMETA(DisplayName="Running"),JumpUMETA(DisplayName="Jumping")};

注:UENUMUMETA是 Unreal Engine 的反射宏,用于蓝图暴露。

4. 转换规则

  • 不能隐式转为整数
  • 如需获取数值(如存档、网络包),必须显式转换:
uint8 StateByte=static_cast<uint8>(CurrentState);

结论

在游戏开发中:

  • 永远不要用enum
  • 始终使用enum class
  • 指定底层类型(如: uint8_t)以节省内存。
  • 通过static_cast显式转换,确保意图明确。

这是保证代码健壮性、可维护性和性能的基础实践。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 14:45:53

亲测Glyph视觉推理:让大模型‘看懂’长文本图像

亲测Glyph视觉推理&#xff1a;让大模型‘看懂’长文本图像 你有没有试过把一篇5000字的技术文档、一份带复杂公式的PDF讲义&#xff0c;或者一页密密麻麻的API接口说明图&#xff0c;直接丢给一个视觉语言模型&#xff0c;然后问它&#xff1a;“这段代码为什么报错&#xff…

作者头像 李华
网站建设 2026/4/16 14:21:53

3个步骤实现Qt界面现代化:无缝迁移Ribbon风格的QRibbon应用指南

3个步骤实现Qt界面现代化&#xff1a;无缝迁移Ribbon风格的QRibbon应用指南 【免费下载链接】QRibbon Qt 实现的 Ribbon 风格菜单栏&#xff0c;基本思路是定制QTabWidget&#xff0c;通过QSS&#xff08;样式表&#xff09;实现显示样式的调整&#xff0c;QRibbon的原则是尽量…

作者头像 李华
网站建设 2026/4/15 23:46:44

DCT-Net人像卡通化生产环境:Nginx反向代理+8080服务稳定部署

DCT-Net人像卡通化生产环境&#xff1a;Nginx反向代理8080服务稳定部署 1. 项目概述 DCT-Net人像卡通化服务是一个基于深度学习的图像处理工具&#xff0c;能够将普通人物照片转化为高质量的卡通风格图像。这个生产环境部署方案结合了Nginx反向代理和8080端口服务&#xff0c…

作者头像 李华
网站建设 2026/4/15 15:58:28

聊天记录生成器,自定义对话头像,免费无广免登录

前言 今天分享的这款聊天记录生成器&#xff0c;界面干净简洁&#xff0c;操作简单&#xff0c;支持自定义好友名称、对话内容&#xff0c;头像等&#xff0c;生成的聊天支持生成视频是以滚动的方式出现&#xff0c;关键是免费无广告免登录&#xff0c;打开就能用&#xff0c;做…

作者头像 李华
网站建设 2026/4/15 20:31:52

Hunyuan-MT-7B高性能推理教程:vLLM动态批处理与PagedAttention调优

Hunyuan-MT-7B高性能推理教程&#xff1a;vLLM动态批处理与PagedAttention调优 1. 模型概述 Hunyuan-MT-7B是腾讯混元团队开发的高性能多语言翻译模型&#xff0c;具有以下核心特点&#xff1a; 70亿参数规模&#xff1a;采用Dense架构&#xff0c;BF16格式下模型大小约14GB…

作者头像 李华
网站建设 2026/4/16 14:06:06

Qwen3-TTS-Tokenizer-12Hz部署案例:企业私有化部署安全策略配置指南

Qwen3-TTS-Tokenizer-12Hz部署案例&#xff1a;企业私有化部署安全策略配置指南 1. 为什么企业需要私有化部署Qwen3-TTS-Tokenizer-12Hz&#xff1f; 你是否遇到过这样的问题&#xff1a;语音合成系统要处理大量客户通话录音&#xff0c;但把音频上传到公有云API存在合规风险…

作者头像 李华