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

new*_*bie 2 c++ class-template template-classes

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

template <class T> 
class A {};

template <class T> 
class B {};
Run Code Online (Sandbox Code Playgroud)

那么有可能的是,用户可以做这样的事A<int> a;,并B<float> b;

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

谢谢

zda*_*dan 7

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

template<class T>
struct C {

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

};
Run Code Online (Sandbox Code Playgroud)

客户只需通过C访问:

C<T>::A a;
C<T>::B b;
Run Code Online (Sandbox Code Playgroud)