掲示板一覧   -   トピック一覧
   EA ソースコード生成・コード生成テンプレート
     C++のスマートポインタの定義方法は?


フラット表示 前のトピック | 次のトピック
投稿者 トピック
sugimoto
投稿日時: 2011-11-7 11:07
EA Administrator
投稿: 1895

C++のスマートポインタの定義方法は?

サポートに寄せられたご質問の要約です。

○ご質問

boostのスマートポインタをクラスのメソッドの引数や戻り値に
使用するときのEAでの定義方法を教えてください。

定義してコード生成すると、
boost::shared_ptr<sample::classB> classA::func1();

int classA::func2( boost::shared_ptr<sample::classB> aArg );
と出力されるようにしたいと思っています。

○回答

こちらの実現には、タグ付き値を利用し、コード生成テンプレートを
カスタマイズしていただく必要がございます。

例えば、該当の操作のタグ付き値にboost, 値にtrueなどと設定し、
その操作については、boost::shared_ptr<(操作の戻りの型)>を
出力するようにするようにコード生成テンプレートをカスタマイズします。

上記のタグ付き値を設定した場合、.cppに生成する操作については
「Operatino Declaration Impl」テンプレートにおいて、
%RESOLVE_QUALIFIED_TYPE("::")%の部分を以下のように
カスタマイズすると、ご希望の結果が得られます。

$opInfo=%opTag:"boost"=="true" ? "boost::shared_ptr<" : ""%
$opInfo+=%RESOLVE_QUALIFIED_TYPE("::")%
$opInfo+=%opTag:"boost"=="true" ? ">" : ""%
$opInfo

.hの操作の定義部分、パラメータについても同様に、タグ付き値の設定および
コード生成テンプレートのカスタマイズが必要になります。

ご確認のほど、よろしくお願いいたします。
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » C++のスマートポインタの定義方法は? sugimoto 2011-11-7 11:07