如何使多个模板类具有相同的类型

时间:2014-11-28 17:33:52

标签: c++ class-template template-classes

有两个模板类A和B.如何强制将它们实例化为相同类型而不将其与另一个嵌套?例如如果我像下面这样定义两个类:

template <class T> 
class A {};

template <class T> 
class B {};

然后用户可能会执行类似A<int> a;B<float> b;

的操作

我想强制A和B具有完全相同的类型,但我 NOT 希望它们彼此嵌套。所以当有人使用这两个类时,A和B必须具有相同的类型。有没有办法做到这一点?那些像这样设计课程的好习惯是什么?

由于

2 个答案:

答案 0 :(得分:7)

您不必将它们彼此嵌套,但您可以将它们嵌套在第三种类型中:

template<class T>
struct C {

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

};

客户只需通过C访问:

C<T>::A a;
C<T>::B b;

答案 1 :(得分:0)

如果你打算在另一个类中使用一个类的变量,你可以做这样的事情,

template <class T> 
class A {
//code 
};

template <class U> 
class B {
//code
A<U> a; 
//remaining code
};