news 2026/4/15 23:50:03

自定义枚举-–-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/4/12 16:28:06

1、云、虚拟化与数据存储网络:从挑战到机遇的旅程

云、虚拟化与数据存储网络:从挑战到机遇的旅程 在当今数字化的时代,信息技术(IT)领域正经历着前所未有的变革。数据的爆炸式增长、新技术的不断涌现,都给企业的信息服务带来了新的挑战和机遇。本文将深入探讨云、虚拟化和数据存储网络相关的重要话题,帮助您更好地理解如…

作者头像 李华
网站建设 2026/4/13 18:00:41

8、数据足迹缩减:实现经济高效的数据需求增长

数据足迹缩减:实现经济高效的数据需求增长 在当今数字化时代,数据量呈爆炸式增长,企业和组织面临着数据存储、管理和保护的巨大挑战。数据足迹缩减(Data Footprint Reduction,DFR)作为应对这一挑战的关键策略,正日益受到关注。本文将深入探讨数据足迹缩减的相关内容,包…

作者头像 李华
网站建设 2026/4/9 0:04:23

10、数据存储服务与系统全解析

数据存储服务与系统全解析 1. 数据存储概述 数据存储技术用于在内部或外部、本地或远程(包括云与托管服务提供商)基础上存储和访问数据、应用程序和虚拟机。存储的位置多样,如SAN、NAS、云系统、服务器、工作站、笔记本电脑和其他便携式设备等。不同类型的存储具有不同的特…

作者头像 李华
网站建设 2026/4/11 5:21:20

14、云、虚拟和数据存储网络的管理工具解析

云、虚拟和数据存储网络的管理工具解析 1. 引言 在当今的 IT 领域,云、虚拟和数据存储网络的管理至关重要。正如 Greg Schulz 所说:“如果你只有一把锤子,那么所有东西看起来都像钉子。”这强调了工具选择和使用的重要性。本文将深入探讨云、虚拟和数据存储网络的管理工具…

作者头像 李华
网站建设 2026/4/15 10:27:21

16、数据存储网络的效率与效能提升之路

数据存储网络的效率与效能提升之路 1. 回顾与思考 在探讨数据存储网络相关话题时,我们不应局限于是否需要云、虚拟化、融合或数据存储网络环境这些问题。对于非供应商、顾问、分析师、记者或负责组织 IT 相关解决方案的人来说,购买和部署新解决方案通常是为了解决业务问题。…

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

互联网大厂Java后端面试中常见面试题及其答案

java中的四种引用有哪些 java中的四种引用有&#xff1a;强引用、软引用、弱引用和虚引用。不同的引用类型&#xff0c;主要体现的是对象不同的可达性&#xff08;reachable&#xff09;状态和对垃圾收集的影响。 强引用&#xff08;"Strong" Reference&#xff09…

作者头像 李华