- 278 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 17:05:08 ]
- 質問というか相談。以下のような多相性を目的としないクラス階層がある。
struct A {}; // 空の基底 struct B: virtual A { Foo foo; }; template<typename T> struct C: virtual A { T t; }; template<typename T> struct D: B, C<T> {}; // fooとtを両方持つ // B, C, Dを保持するクラス、後でaをダウンキャストして使う struct Holder { A *a; }; Holderを使う時に必要な型(Foo, T)は判っているが、A*の実際の型(B, C, D)は判らない。 この例だとAを仮想継承しないといけないが、そうするとB, C, Dのどれを実体化しても サイズがポインタ分増えてしまう。これらを持つHolderは大量に作成されるので、 各オブジェクトのサイズは少しでも減らしたい。 どうしたらいいだろうか?やはり仮想継承するしかない?
|

|