如何在Enterprise Architect中使用部分C STL?
能够将某些类属性指定为std :: string或使用std :: auto_ptr(或甚至std :: tr1 :: shared_ptr)作为类型会很好.
能够将某些类属性指定为std :: string或使用std :: auto_ptr(或甚至std :: tr1 :: shared_ptr)作为类型会很好.
另一个有趣的事情是如何能够将容器类型(如std :: vector和std :: map)集成到EA中.
解决方法
我已经教过如何将STL容器看作EA,我想它也可以扩展到stl指针:
正向工程:
您可以在语言设置中全局定义不同多重性的集合类,或者为项目的特定类定义集合类(这将定义它如何“包含”在其他类中)this way.
简单示例设置:
确保为关联的目标类设置容器类,而不是源.将目标角色的多重性设置为多个(根据代码模板,不同于0,0..1,1和空字段).此外,将关联的目标角色的包含设置为Value,以避免生成指向容器的指针.
另一种更灵活的方法是修改设置中的代码模板 – >代码生成模板.我相信有一种方法可以覆盖原型连接器的默认模板,但我从未尝试过.这可能是生成STL指针的唯一方法,因为集合类定义仅供EA用于大于1的多重性.
逆向工程:
转到工具 – >选项 – >源代码工程 – > C并将以下字符串附加到’其他集合类’:
vector<#TYPE#*>;deque<#TYPE#*>;list<#TYPE#*>;stack<#TYPE#*>;queue<#TYPE#*>;priority_queue<#TYPE#*>;set<#TYPE#*>;map<*,#TYPE#*>;multiset<#TYPE#*>;multimap<*,#TYPE#*>;
我从来没有尝试过,但我认为将STL指针添加到此处是微不足道的.
往返工程
如果您进行往返工程,我不知道上述情况是否有效.我认为定义不对称会导致问题.