- ベストアンサー
別の型の作成について
C/C++言語におけるtypedefの役割は「別名の型」を作成することですが、 「別の型」を作成することはできるでしょうか? 継承を使えば実装可能ですが、 継承元クラスにコンストラクタがあった場合、 継承先からいちいち呼び出すのがとても面倒です。 できればマクロに頼らずに実装したいのですが、 何か標準化された、もしくは近い実装方法はありますか?
- みんなの回答 (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;
その他の回答 (1)
- koko_u_
- ベストアンサー率18% (459/2509)
回答No.1
>「別の型」を作成することはできるでしょうか? 何がしたいのかわかりません。 型を定義するには class(あるいは struct) キーワードを使用するしかないと思います。 >継承元クラスにコンストラクタがあった場合、 >継承先からいちいち呼び出すのがとても面倒です。 どのように「面倒」なのかよくわかりません。 通常、クラスにコンストラクタはつきものですし、 派生クラスのコンストラクタが、まず親クラスのコンストラクタを呼び出して そのベース部分を構築するのは普通だと思うのですが。
お礼
>template <int L> class A; >typedef A<__LINE__> Adash なるほど。__LINE__を渡すことによってユニークな型が作成できるのですね。 この手法が一番よさそうです。 どうもありがとうございました。