• ベストアンサー

別の型の作成について

C/C++言語におけるtypedefの役割は「別名の型」を作成することですが、 「別の型」を作成することはできるでしょうか? 継承を使えば実装可能ですが、 継承元クラスにコンストラクタがあった場合、 継承先からいちいち呼び出すのがとても面倒です。 できればマクロに頼らずに実装したいのですが、 何か標準化された、もしくは近い実装方法はありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

マクロでよければ、 http://www.boost.org/doc/libs/1_35_0/libs/serialization/doc/strong_typedef.html のようなものもありますが... コンテナクラスなんかだと、アロケータを標準のもの以外に置き換えてあげれば別の型を作ることができます。 あるいは、別の型を作る必要があるクラスは、そのためのテンプレート仮引数を設けておくのも一つの手です。 template <int L> class A; typedef A<__LINE__> Adash;

emuesuenu
質問者

お礼

>template <int L> class A; >typedef A<__LINE__> Adash なるほど。__LINE__を渡すことによってユニークな型が作成できるのですね。 この手法が一番よさそうです。 どうもありがとうございました。

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>「別の型」を作成することはできるでしょうか? 何がしたいのかわかりません。 型を定義するには class(あるいは struct) キーワードを使用するしかないと思います。 >継承元クラスにコンストラクタがあった場合、 >継承先からいちいち呼び出すのがとても面倒です。 どのように「面倒」なのかよくわかりません。 通常、クラスにコンストラクタはつきものですし、 派生クラスのコンストラクタが、まず親クラスのコンストラクタを呼び出して そのベース部分を構築するのは普通だと思うのですが。

関連するQ&A