掲示板一覧 - トピック一覧 EA ソースコード生成・コード生成テンプレート
集約関係をコード生成する際にフィールドを配列で指定したい |
| フラット表示 | 前のトピック | 次のトピック |
| 投稿者 | トピック |
|---|---|
| sugimoto | 投稿日時: 2007-7-11 17:37 |
EA Administrator ![]() ![]() 投稿: 1895 |
集約関係をコード生成する際にフィールドを配列で指定したい○ご質問
1) 「集約」関係をコード生成する際にフィールドを配列で指定することは できますか? 例) class ArrayElement{ }; を「集約」のターゲットとして指定し、class Arrayをソースコード生成する。 <現状> class Array{ ArrayElement *m_ArrayElement; }; <要望> class Array{ std::vector< ArrayElement * > m_ArrayElement; }; 2) #include <vector>を追加したい場合、どうすればよいですか? ○回答 1) ArrayElement クラスのプロパティ画面の詳細タブにあるコレクション クラスを編集してください。 「既定のコレクションクラス」欄に"std::vector<#TYPE#>"と設定し、 多重度を1..*にした場合は、上記のような出力になります。 ポインタの位置は少し異なり、以下のようになります。 std::vector<ArrayElement> *m_ArrayElement; なお、ArrayElementクラスのみではなく、全体的にvectorを使用する 場合は、メインメニュー→「ツール」→「オプション」のC++ページにある コレクションクラスに、上記内容を設定してください。 2) 3通りほどご提案いたします。 ○提案1 あるクラスのヘッダのみに"#include <vector>"を出力したい場合: 該当のクラスで右クリックして「ソースコードの生成」を選択し、 インポートおよびヘッダの上段に#include <vector>を記述し、 ソースコード生成を行う。 ○提案2 全てのヘッダファイルに"#include <vector>"を出力したい場合: コード生成テンプレートの以下の場所を編集します。 1.コード生成テンプレートを開く(「設定」→「コード生成テンプレート」) 2.言語をC++に設定する 3.Fileテンプレートを開く 4.以下の箇所を修正し、保存する [現状] %ImportSection% %list="Namespace" @separator="\n\n"% [変更案] %ImportSection% #include <vector> %list="Namespace" @separator="\n\n"% ○提案3 Vectorの記述がされる場合(Vectorの設定がされており、かつ 多重度が設定されている場合)のみ"#include <vector>"を出力 したい場合: コード生成テンプレートを編集する必要があります。 Namespaceテンプレートの中で、Namespaceの出力を行っていますが、 "#include <vector>"はNamespaceの前に出力したいと思います。 そのため、Namespaceの情報を出力する前に、"#include <vector>"を 出力すべきかどうかの判断を行い、必要に応じて"#include <vector>" を記述する必要があります。 この場合、Vectorの記述がされるかどうかを判断し、"#include <vector>" を出力する新しいテンプレートを作成する必要があります。 |
| フラット表示 | 前のトピック | 次のトピック |
| 題名 | 投稿者 | 日時 |
|---|---|---|
| » |
sugimoto | 2007-7-11 17:37 |




