掲示板一覧   -   トピック一覧
   EA ソースコード生成・コード生成テンプレート
     C++の前方宣言について


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
未登録ゲスト
投稿日時: 2007-4-17 13:09

C++の前方宣言について

#include文の自動生成に関する質問です。

現在クラス図の作成を行っており、クラスの前方宣言が必要な部分があります。(Class1からClass2へ関連が引かれており、Class2はClass1のポインタ型のメンバ変数を持つ)

Class2の『インポートおよびヘッダ』の部分に前方宣言と、cppファイルでのインクルード文を書いたのですが、ソースの自動生成を行うとClass2.hのソースには
class Class1;
#include "Class1.h"
と、出力されてしまいます。
#inclue文の出力はClass2がメンバとしてClass1を持っているためだと思いますが、これを出力させないためにはどのような設定をすれば良いのでしょうか。

よろしくお願いします。
tkouno
投稿日時: 2007-4-17 13:50
EA Administrator
投稿: 3939

Re: C++の前方宣言について

頂きましたご質問に回答させていただきます。

まず、ご指摘の件の出力については、コード生成テンプレートの
fileImportsマクロおよびfileHeadersマクロで行っています。

これらのマクロでは、ご指摘のような形に内部で
結果を作成しています。この挙動については
変更することはできません。

そこで、ご希望の結果に近いと思われる結果になるような
コード生成テンプレートを作成しました。

以下のXMLファイルを「リファレンス情報の読み込み」機能で
読み込んでから、新規にソースコードを生成してください。
なお、その際には現時点で設定されているはずの
『インポートおよびヘッダ』の部分の内容は削除してください。

(追記: サンプルテンプレートの公開は終了しました。)

ご確認のほどよろしくお願いします。




未登録ゲスト
投稿日時: 2007-4-17 14:58

Re: C++の前方宣言について

回答ありがとうございます。

XMLを読み込み、ソースコードを生成して#includeの部分に前方宣言がされていることを確認しました。
ただ、今度はヘッダ内にて実体が欲しいとき(集約)にインクルード文が無いためコンパイルが通らない、という状況になっています。

テンプレートと下記アドレス先を拝見させて頂いたのですが
集約のときはインクルード文、属性に持っているだけの場合は前方宣言、と分けることは可能でしょうか。
もしも可能であるならば、どのようにテンプレートに記述すればよろしいでしょうか。

以上、よろしくお願いします。
tkouno
投稿日時: 2007-4-17 15:09
EA Administrator
投稿: 3939

Re: C++の前方宣言について

集約の判定は、importFromAggregationの条件になりますので、この条件と、それ以外の場合とで処理を分けるのがよろしいかと思います。

先ほどと同じURLで、この点を修正したものをアップロードしましたので、ぜひ参考にしてみてください。


未登録ゲスト
投稿日時: 2007-4-17 15:41

Re: C++の前方宣言について

XMLファイルを確認させて頂きました。

修正して下さったテンプレートにより、集約関係にあるクラスをインクルードしたソースコードを生成することが出来ました。
これで想定通りの自動生成が行えそうです。

迅速な対応ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ