Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在企业架构师中使用C++ STL 企业架构中如何使用C++ STL的一部分? 最好能够将某些类属性指定为std::string,或者使用std::auto_ptr,甚至std::tr1::shared_ptr作为类型_C++_Stl_Uml_Std_Enterprise Architect - Fatal编程技术网

在企业架构师中使用C++ STL 企业架构中如何使用C++ STL的一部分? 最好能够将某些类属性指定为std::string,或者使用std::auto_ptr,甚至std::tr1::shared_ptr作为类型

在企业架构师中使用C++ STL 企业架构中如何使用C++ STL的一部分? 最好能够将某些类属性指定为std::string,或者使用std::auto_ptr,甚至std::tr1::shared_ptr作为类型,c++,stl,uml,std,enterprise-architect,C++,Stl,Uml,Std,Enterprise Architect,另一件有趣的事情是如何将std::vector和std::map等容器类型集成到EA中。我一直在玩弄这类东西,它是可行的。。。只是 您需要做的是从源代码处对库进行反向工程,但由于EA不包含完整的预处理器,您最终会遇到许多可能需要定义语言宏错误的问题。也许首先通过预处理器运行源代码会有所帮助 当然,另一种方法是根据需要添加STL类 至于容器类型,我不确定EA是否为中的分配器之类的构造提供了任何支持 template < class T, class Allocator = allocator

另一件有趣的事情是如何将std::vector和std::map等容器类型集成到EA中。

我一直在玩弄这类东西,它是可行的。。。只是

您需要做的是从源代码处对库进行反向工程,但由于EA不包含完整的预处理器,您最终会遇到许多可能需要定义语言宏错误的问题。也许首先通过预处理器运行源代码会有所帮助

当然,另一种方法是根据需要添加STL类

至于容器类型,我不确定EA是否为中的分配器之类的构造提供了任何支持

template < class T, class Allocator = allocator<T> > class vector;

但是,简单模板类被定义为具有模板参数的类。创建实例化的最简单方法是创建一个新类,进入其Templates选项卡并向template类添加绑定;这允许您为正式模板参数选择值。

我已经教过STL容器对EA的外观,我想它也可以扩展到STL指针:

前沿工程:

您可以在语言设置中全局地为不同的多重性定义集合类,或者为项目的特定类定义集合类,这将定义集合类如何包含在其他类中。 简单示例设置:

确保为关联的目标类而不是源类设置了容器类。根据代码模板将目标角色的多重性设置为多个不同于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指针是微不足道的

往返工程


如果你做往返工程,我不知道上述方法是否有效。我假设定义不对称的事实会引起问题。

这似乎是EA所能做到的。。。谢谢你详细的回答!