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

How to make multiple template class to have the same type

本文关键字:类型 何使多      更新时间:2023-10-16

有两个模板类A和B。如何强制将它们实例化为同一类型,而无需将一个与另一个嵌套在一起?例如,如果我像下面这样定义这两个类:

template <class T> 
class A {};
template <class T> 
class B {};

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

我想强制 A 和 B 具有完全相同的类型,但我不希望它们相互嵌套。因此,当有人使用这两个类时,A 和 B 必须具有相同的类型。有什么办法可以做到这一点吗?设计这样的课程有什么好的做法呢?

谢谢

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

template<class T>
struct C {
    typedef A<T> A;
    typedef B<T> B;
};

客户端仅通过 C 访问:

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

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

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