news 2026/6/9 22:44:35

自定义枚举-–-behaviac

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自定义枚举-–-behaviac

原文

  • 类似于自定义类,在.h文件中,任意编写一个自定义枚举类型,然后通过宏DECLARE_BEHAVIAC_ENUM声明该枚举类型。需要注意的是,宏DECLARE_BEHAVIAC_ENUM必须定义在全局的namespace里,即放在任何命名空间之外。

    如下代码样例所示:

namespaceTNS{namespaceNE{namespaceNAT{enumeColor{RED,GREEN,BLUE,YELLOW,WHITE,};}}}DECLARE_BEHAVIAC_ENUM(TNS::NE::NAT::eColor,eColor);
  • 在.cpp文件中,通过一系列宏注册该枚举自身的描述及其枚举值:
    • 宏BEGIN_ENUM_DESCRIPTION和END_ENUM_DESCRIPTION表示枚举信息注册的开始和结束。

    • 可选的宏ENUMCLASS_DISPLAY_INFO用于注册枚举自身的显示名和描述。

    • 宏DEFINE_ENUM_VALUE用于注册枚举的值,可以通过.DISPLAYNAME的追加方式为值添加显示名,通过.DESC的追加方式为值添加描述。

      如下代码样例所示:

BEGIN_ENUM_DESCRIPTION(TNS::NE::NAT::eColor,eColor){ENUMCLASS_DISPLAY_INFO(L"色彩枚举",L"eColor是用于测试枚举使用的类型");DEFINE_ENUM_VALUE(TNS::NE::NAT::RED,"RED").DISPLAY_INFO(L"红色",L"激进");DEFINE_ENUM_VALUE(TNS::NE::NAT::GREEN,"GREEN");DEFINE_ENUM_VALUE(TNS::NE::NAT::BLUE,"BLUE");DEFINE_ENUM_VALUE(TNS::NE::NAT::YELLOW,"YELLOW");DEFINE_ENUM_VALUE(TNS::NE::NAT::WHITE,"WHITE");}END_ENUM_DESCRIPTION()
  • 在初始化注册(Register)的部分需要加上如下的代码,反注册(UnRegister)的部分添加相应UnRegister的代码。注意这部分Register/UnRegister的代码不是必须的,如果该类型没有用作par或者没有用作条件比较,就可以不需要。
behaviac::TypeRegister::Register<TNS::EnumTest>(" TNS::EnumTest ");behaviac::TypeRegister::UnRegister<TNS::EnumTest>(" TNS::EnumTest ");

更多细节可以参考behaviac组件C++源码库中btunittest工程的UnitTestTypes.h文件中eColor结构体相关的代码。


声明的类型只用被使用过才会导出。所谓使用过是指:

  1. 作为某Agent的成员

  2. 作为某Agent成员函数的参数或返回值

如果只是声明了,但是没有被使用过,则不会被导出。

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

自定义类或结构体-–-behaviac

原文 在.h文件中&#xff0c;任意编写一个自定义的类或结构体&#xff0c;并用宏DECLARE_BEHAVIAC_STRUCT声明该类或者结构体为非虚类&#xff0c;如下代码所示&#xff1a; struct TypeTest2_t {int name;float weight;bool bLive;DECLARE_BEHAVIAC_STRUCT(TypeTest2_t);…

作者头像 李华
网站建设 2026/6/9 23:52:31

清朝条约全集 PDF 电子版(三册合集):从尼布楚到辛丑条约的完整史料集

若想系统梳理清代对外关系的史料脉络&#xff0c;这份《清代外交文献三册合辑》可作为重要参考 —— 它完整收录了自 1689 年《尼布楚条约》至 1901 年《辛丑条约》期间的核心外交文书&#xff0c;覆盖清代近 220 年的对外交往历程。 这套合辑以时间为线索分册编排&#xff1a…

作者头像 李华
网站建设 2026/6/10 12:53:16

6、数据保护:备份、恢复与业务连续性

数据保护:备份、恢复与业务连续性 在当今数字化时代,数据保护对于各类组织而言至关重要。它不仅关乎数据的安全性,还涉及业务的连续性和灾难恢复能力。本文将深入探讨数据保护的各个方面,包括面临的挑战、可用的机会以及具体的保护策略和技术。 1. 数据保护基础 在 IT 领…

作者头像 李华
网站建设 2026/6/10 6:02:34

检索重排序的 Dify 结果过滤:5步实现精准结果过滤与排序优化

第一章&#xff1a;检索重排序的 Dify 结果过滤在构建基于大语言模型的应用时&#xff0c;检索增强生成&#xff08;RAG&#xff09;系统常面临检索结果相关性不足的问题。Dify 作为低代码 AI 应用开发平台&#xff0c;提供了灵活的结果过滤与重排序机制&#xff0c;帮助开发者…

作者头像 李华
网站建设 2026/6/9 23:46:24

Cocos creator判断节点是否能用的方法

一般用 if (coinNode && coinNode.isValid)&#xff0c;但为什么unity却不用这种呢&#xff1f;以下是AI给的回答一、Cocos Creator 中 if (coinNode && coinNode.isValid) 的原因在 Cocos Creator&#xff08;尤其是较新版本&#xff0c;比如 v3.x&#xff09…

作者头像 李华
网站建设 2026/6/10 12:37:16

Gemini 3.0架构革新:从单模态到“全模态统一”的技术跃迁

当AI学会像人类一样“融会贯通”所有感官信息 一、痛点&#xff1a;割裂的AI世界 2023年&#xff0c;开发者小李遭遇典型困境&#xff1a; 用文本模型生成产品需求文档 → 需手动转为流程图用图像模型识别UI设计稿 → 需人工标注组件坐标用代码模型实现功能 → 需反复解释业…

作者头像 李华