2011-04-14 228 views
6

如何在Enterprise Architect中使用C++ STL的某些部分?
能夠指定某些類屬性爲std::string或使用std::auto_ptr(或甚至std::tr1::shared_ptr)作爲類型將是很好的。在Enterprise Architect中使用C++ STL

另一個有趣的事情是如何將容器類型如std::vectorstd::map整合到EA中。

回答

3

我教過的STL容器看起來怎麼樣給EA,我想這可以擴展到STL指針太:

正向工程:

您可以在全球範圍內定義不同的多重集合類語言設置,或爲您的項目的特定類別(這將定義它是如何「包含」在其他類)this way。 簡單的例子設置:

Set all collection classes to std::vector

確保您的目標類的關聯,而不是源設置的容器類。根據代碼模板將目標角色多重設置爲多個(根據代碼模板不同,爲0,0,1,1和空字段)。另外,將遏制的目標角色的關聯設置爲的值以避免生成指向容器的指針。

另一種更靈活的方法是修改設置 - >代碼生成模板中的代碼模板。我相信有一種方法可以覆蓋原型連接器的默認模板,儘管我從未嘗試過。這可能是生成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指針這是微不足道的。

往返工程

如果如果你做上述工程的往返工程,我不知道。我認爲定義不對稱會導致問題。

+0

看來,這是至於EA可以去...感謝您的詳細解答! – MOnsDaR 2013-02-06 19:47:49

1

我一直在玩這種東西,它是可行的...只是。

你需要做的是從源頭反向工程庫,但由於EA不包含完整的預處理器,因此最終會出現很多「您可能需要定義語言宏」錯誤。也許實際上首先通過預處理器來運行源代碼會有所幫助。

另一種方式當然是在您需要時添加STL類。

至於容器類型,我不知道,如果EA提供

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

簡單的模板類,針對像分配器結構的任何支持,但是,被定義爲模板參數一類。創建實例化的最簡單方法是創建一個新類,進入其模板選項卡並向模板類添加一個綁定;這允許您爲正式模板參數選擇值。

相關問題