掲示板一覧   -   トピック一覧
   EA ソースコード生成・コード生成テンプレート
     C++ テンプレート機能


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
sugimoto
投稿日時: 2006-12-15 13:41
EA Administrator
投稿: 1992

C++ テンプレート機能

○ご質問

C++ でコード生成する場合、テンプレートクラス(Class1<class T>)の
サブクラス (Class2) でテンプレートパラメータが a となるように指定しました。

Class2 は更に別のクラス (Class3) を多重継承しています。
Class3 はテンプレートクラスではありません。

この場合、生成されたコード Class2.h のクラス定義で、親クラスがClass3<a> と
表記されてしまいます。

Class3はテンプレートクラスではないので、Class3と表記したいのですが、
回避方法を教えてください。


○回答

ご指摘いただきました現象を確認いたしました。

本来であれば、テンプレートのインスタンス化されたクラスである場合、
その親クラスがテンプレートクラスであればテンプレートの引数表記を
行うべきですが、現状多重継承が考慮に入れられてなく、その親クラス
すべてについてテンプレートの引数表記を行うようになっております。

この点に関しましては、現状ソースコードテンプレートで対応すること
ができません。(親クラスがテンプレートクラスであるかどうかを確認
できるインタフェースがないため)

こちらにつきましては、改善させていただきます。

申し訳ございませんが、改善まではClass3<a>などの表記は
手動で修正いただきますようお願いいたします。
sugimoto
投稿日時: 2006-12-21 16:58
EA Administrator
投稿: 1992

Re: C++ テンプレート機能

本不具合は、開発元で修正予定となっております。
ただし、現状詳細な対応日程等は未定です。申し訳ございません。

なお、手動でソースコードを修正する以外に、以下の回避方法もあります。

1) サブクラス (Class2) のプロパティの詳細タブにて、引数の情報を削除。

2) サブクラスにて右クリック→「追加設定」→「親クラスとインタフェースの指定」
にてテンプレートクラス(Class1<class T>)を削除し、Class1<a>を追加する。


ご迷惑お掛けしますが、手動で修正または上記方法で回避してください。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ