掲示板一覧   -   トピック一覧
   EA ソースコード生成・コード生成テンプレート
     C++コード生成でクラス変数にthis->をつけるには?


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
未登録ゲスト
投稿日時: 2009-7-24 11:01

C++コード生成でクラス変数にthis->をつけるには?

クラス図上で変数を作成し、変数に対するGetter, Setterを生成しました。

このクラスに対するC++コードを生成すると、例えばGetterのコードは次のようになります。

int SampleCls::GetValue(){

return value;
}

これを以下のように、クラス変数にthis->をつけて出力することはできるのでしょうか?

int SampleCls::GetValue(){

return this->value;
}
tkouno
投稿日時: 2009-7-24 11:11
EA Administrator
投稿: 3939

Re: C++コード生成でクラス変数にthis->をつけるには?

ご質問の内容を出力している箇所は、
コード生成テンプレートの「Operation Body」テンプレートの
12行目かと思います。

11行目のif文で判定し、property getの場合には
12行目の出力を行うようになっています。

そこで、この12行目を変更すれば、ご要望の結果になるかと思います。

ぜひお試し下さい。


追伸:
このあたりの概要を効率よく知るためには
無料セミナーがお勧めです。まだ残席があると思います。

https://www.sparxsystems.jp/seminar/EACodeGenerate.htm
未登録ゲスト
投稿日時: 2009-7-27 9:53

Re: C++コード生成でクラス変数にthis->をつけるには?

ご回答ありがとうございます。
以下のような変更で無事対応できました。

Getter
[変更前]
%elseIf opStereotype == "property get" and opTag:"attribute_name" != ""%
\treturn %opTag:"attribute_name"%;

[変更後]
%elseIf opStereotype == "property get" and opTag:"attribute_name" != ""%
\treturn this->%opTag:"attribute_name"%;

Setter
[変更前]
%elseIf opStereotype == "property set" and opTag:"attribute_name" != ""%
\t%opTag:"attribute_name"% = newVal;

[変更後]
%elseIf opStereotype == "property set" and opTag:"attribute_name" != ""%
\tthis->%opTag:"attribute_name"% = newVal;
tkouno
投稿日時: 2009-7-27 10:18
EA Administrator
投稿: 3939

Re: C++コード生成でクラス変数にthis->をつけるには?

お忙しい中ご返信ありがとうございました。
また、具体的な変更例のご提示ありがとうございました。
(同じような悩みを持つ方の参考になると思います。)

そのほか、ご不明な点がございましたら
遠慮なくご質問ください。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ