2

2 つのテンプレート クラス A と B があります。互いに入れ子にせずに、それらを同じ型にインスタンス化する方法を教えてください。たとえば、次のように 2 つのクラスを定義するとします。

template <class T> 
class A {};

template <class T> 
class B {};

次に、ユーザーがこのようなことを行う可能性がありA<int> a;ますB<float> b;

A と B にまったく同じ型を強制したいのですが、それらを互いに入れ子にしたくありません。したがって、誰かがこれら 2 つのクラスを使用する場合、A と B は同じ型でなければなりません。それを行う方法はありますか?そして、このようなクラスを設計するための良い習慣は何ですか?

ありがとう

4

2 に答える 2

7

それらを互いに入れ子にする必要はありませんが、3 番目のタイプ内に入れ子にすることができます。

template<class T>
struct C {

    typedef A<T> A;
    typedef B<T> B;

};

クライアントは C: 経由でアクセスするだけです。

C<T>::A a;
C<T>::B b;
于 2014-11-28T17:38:07.320 に答える