掲示板一覧   -   トピック一覧
   EA ソースコード生成・コード生成テンプレート
     C++のメソッドの引数に*や&を付加したい


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
sugimoto
投稿日時: 2008-2-20 15:10
EA Administrator
投稿: 1895

C++のメソッドの引数に*や&を付加したい

○ご質問

C++のメソッドの引数において、種類を「out」にしても * が付きません。
また、引数に&を付けたい場合、どうすればよいのでしょうか?

○回答

現状、既存のコード生成テンプレートでは、メソッドの引数に*や&を付加
するようになっていませんので、コード生成テンプレートをカスタマイズ
する必要があります。

以下の例では、引数の種類がoutの場合、オプションのC++のページに
おける「既定の参照型」(デフォルトは*)に合わせてコード生成する
ようにしています。

また、&につきましては、例えばoutの場合には*だが、inoutのときには&の
ような形で対応することは可能です。
この場合、以下のテンプレートで「%if paramKind == "out"%」と判定して
いる部分にinoutの場合の判定も追加し、%genOptCPPDefaultReferenceType%
の値を利用するのではなく、固定文字として*や&を返すようにすることで
個別に変更できます。

--Parameterテンプレート--
%PI=" "%
%paramFixed=="T" ? "const" : ""%
%paramIsEnum=="T" ? "enum" : "" %
%PI=""%
%RESOLVE_QUALIFIED_TYPE("::", "int")%
%if paramKind == "out"%
%genOptCPPDefaultReferenceType%
%endIf%

%if paramType != "void"%
%paramName%
%endIf%
%PI=""%
%if paramDefault != "" and paramDefault != "<none>"%
= %paramDefault%
%endIf%

--Parameter Implテンプレート--
%PI=" "%
%paramFixed=="T" ? "const" : ""%
%paramIsEnum=="T" ? "enum" : "" %
%PI=""%
%RESOLVE_QUALIFIED_TYPE("::", "int")%
%if paramKind == "out"%
%genOptCPPDefaultReferenceType%
%endIf%

%if paramType != "void"%
%paramName%
%endIf%
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ