【发布时间】:2014-11-28 17:33:51
【问题描述】:
有两个模板类A和B。如何强制将它们实例化为相同的类型不相互嵌套?例如如果我像下面这样定义两个类:
template <class T>
class A {};
template <class T>
class B {};
那么用户可能会做这样的事情A<int> a;和B<float> b;
我想强制 A 和 B 具有完全相同的类型,但我确实不希望它们相互嵌套。所以当有人使用这两个类时,A 和 B 必须具有相同的类型。有没有办法做到这一点?设计这样的课程有什么好的做法?
谢谢
【问题讨论】:
-
你想要一个实例化为 A
+ B ,而不是 A + B 和 A + B 吗?跨度> -
您需要提供一个实际用例。
-
@DieterLücking,我只希望 A 和 B 具有相同的类型,它们可以是 A
和 B 或 A 和 B 和 B ,即 A 和 B 必须用相同的类型实例化。 -
@newbie:多对匹配呢?
-
@CaptainObvlious,实际用例可能是这样的:A 是文件的一行,B 是文件解析器。在 B 中,您可能有 A
getRow(const int rowIndex) 并且您希望解析器和从文件中读取的行具有完全相同的类型。
标签: c++ class-template template-classes