【发布时间】:2020-12-15 14:40:07
【问题描述】:
考虑下面的代码:
template <typename T>
class A{
...
}
template <class U>
class B{
...
}
int main {
B<A<int>> a;
...
}
如果 A
template <class AA, typename T>
class B { ... }
我不简单地将template <typename T> 用于B 类的原因是我在B 中有一个指向A 类的指针,我想使用模板参数class AA 来查看该指针是否为const,因此B 中的成员指针的类型正确。
【问题讨论】:
-
您可以像
template<typename T> class B<A<T>> { /* whatever */ };那样对它进行部分专业化。您自己的解决方案也没有什么坏处。您的问题太模糊,无法给出更具体的答案。 -
@TanveerBadar,感谢您的回答。 B 类应该始终将 A
作为模板参数。真正的参数是 T(以及 A 的常量)。 -
那么,为什么不使用
template <typename T> class B{ A<T> X; ...};呢? -
@Damien,因为我有 'A
* X' 或 'const A * X' 取决于 A 是否为 const。假设 A 是一个非常大的类,我想在 B 中有一个指向该类的指针,但同时 A 可能是 const 或不是。我在这里问了另一个问题:stackoverflow.com/q/65286216/10755448 -
我看不出它有什么变化。你可以有 `template
class B{ A *X;常量 A *Y; ...}; ...
标签: c++ templates template-templates non-type-template-parameter