如何使多个模板类具有相同的类型
How to make multiple template class to have the same type
有两个模板类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
};
相关文章:
- 将运算符<<与隐式转换的非基本数据类型一起使用时出错
- 在非本机类型上具有多个条件的 GDB 断点
- 将分配的内存与基本数据类型一起使用时,是否需要新放置? std::complex?
- 最简单的方法使多个指针一次指向同一位置,一次只处理2个位置
- Doxygen,当参数类型定义使签名相同时,如何拆分函数文档?
- 如何使用基本类型创建C++多维名称数组
- 什么类型会使"std::has_unique_object_representations"返回 false?
- 如何实现赋值运算符,使多个实例共享公共数据
- 使多个形状以不同的位置、大小和颜色显示
- 如何有效地从文件一行又一行地读取数据(相同类型)到多个向量(vectros的向量)
- 在一个曲子中传递相同类型变量的多个
- 如何使用pthreads使多线程正常工作,而不是使用C++在类中提升
- 具有引用数据类型的函数多态性
- 在继承层次结构中将方法定义为虚拟方法一次,以使多态性发挥作用
- 为什么 boost/etc 对模板成员函数的参数类型做这么多 SFINAE?
- 如何使多个模板类具有相同的类型
- C++:使多个进程同时访问 DLL
- 使多个作业生成不兼容的 .so
- 使多态性在C++映射中工作,而不会发生内存泄漏
- 无论如何,我可以使模板<类型名T>接受多个值吗?