2

有两个模板类 A 和 B。如何强制将它们实例化为相同的类型而不将它们与另一个嵌套?例如,如果我定义两个类,如下所示:

template <class T> 
class A {};

template <class T> 
class B {};

那么用户可能会做这样的事情A<int> a;并且B<float> b;

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

谢谢

4

2 回答 2

7

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

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 回答
0

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

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

template <class U> 
class B {
//code
A<U> a; 
//remaining code
};
于 2017-03-26T09:27:54.013 回答