类、结构体或枚举的数组-–-behaviac
2026/5/26 12:41:31 网站建设 项目流程

原文

对于C#版,类型信息不支持[]类型的数组,只支持List<***>类型的数组。

对于C++版,需要按照如下方式进行注册:

基本类型(bool、int、float、char、sbyte、ubyte等)的数组可以直接使用,但当使用到其他自定义类型数组的时候,需要添加特殊的宏和代码,否则运行时可能会有错误(如果没有使用到相应的操作,则没有错误):

  • 在.h的头文件里添加如下所示的宏,但需放在任意namespace之外:
BEHAVIAC_DECLARE_TYPE_VECTOR_HANDLER(TNS::ST::PER::WRK::kEmployee);
  • 在初始化的代码里添加如下所示的注册代码:
behaviac::TypeRegister::Register<TNS::ST::PER::WRK::kEmployee>(" TNS::ST::PER::WRK::kEmployee");
  • 在结束代码里添加如下所示的反注册代码:
behaviac::TypeRegister::UnRegister<TNS::ST::PER::WRK::kEmployee>(" TNS::ST::PER::WRK::kEmployee");

更多细节可以参考behaviac组件C++源码中附带的UnitTestTypes.h文件中的结构体kEmployee。

  • Agent及其子类的数组

    当涉及behaviac::Agent或是其子类的时候,仅支持其指针类型即behaviac::Agent*SubclassAgent*SubclassAgentbehaviac::Agent的一个子类)。

    behaviac::Agent*vector<behaviac::Agent*>类型直接被支持,不需要做什么额外的工作,其任何子类SubclassAgent*也直接被支持。

    但是需要支持vector<SubclassAgent*>的时候,则需要在.h文件里添加如下所示的宏,但需放在任意namespace之外:

BEHAVIAC_DECLARE_TYPE_VECTOR_HANDLER(SubclassAgent*);

在初始化和结束的时候分别注册和反注册:

behaviac::Agent::Register<SubclassAgent>();behaviac::Agent::UnRegister<SubclassAgent>();

更多细节可以参考behaviac组件C++源码中附带的EmployeeParTestAgent.h文件中的类EmployeeParTestAgent。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询