おいふぉりーのぶろぐ

きっと趣味のブログに違いないです!!

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

typedef テンプレート

C++ の話になるわけですが、例えば
template <typename T>
struct Circle
{
  T x, y, radius;
};
こんな風に頂点と半径がテンプレートになっている円クラスのコンテナを、標準ライブラリの list を使って
template <typename T>
typedef std::list<Circle<T> > CircleList<T>;
と言う感じに書きたいことがあります。でも、残念ながら現在の C++ の規格では typedef のテンプレートはサポートされていないので、こんな書き方はできません。(C++ 0xと呼ばれている新しいバージョンのC++標準ではサポートされるらしいのですが) そこで、今は typedef の代わりの手段として Type Generator というテクニックが使われています。これを使うと
template <typename T>
struct CircleList
{
  typedef std::list<Circle<T> > type;
};
となるのですが、使うときは CircleList<int>::type と書く必要があり ::type という部分が邪魔です。

というわけで、"C++ 0x まだかな~"なんて思っています。ちなみに、 MSDN にもこれに関する記事があり、いくつか代替手段が紹介されていたのですが、マクロや、標準ライブラリのコンテナからの派生(これは禁止事項ですよ)というのはちょっといただけないですね。
スポンサーサイト
  1. 2007/05/22(火) 09:31:25|
  2. ソフトウェア開発
  3. | トラックバック:0
  4. | コメント:0
次のページ

来客数

プロフィール

Euphorie

Author:Euphorie
"おいふぉりー"って呼んでくださいな☆
ハードウェアとかソフトウェアとかの開発に興味があったり。。。
連絡先は上の画像。

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。