基础结构的嵌套类型:访问一个模板参数T,即使T是指针
struct Foo{
typedef int inner_type;
};
template<class T>
struct Bar{
typename T::inner_type x;
};
在主:
Bar<Foo>(); // Compiles OK
Bar<Foo*>(); // Doesn't compile: template T becomes a pointer-to-class and is not a valid class anymore.
如何解决此问题?
完美!快速答案谢谢:) – Patric
这不会工作。如果我写'Bar酒吧怎么办?'? –
Nawaz
在这一点上,你不得不使用递归的方法来去掉指针,并得到原始类型'T',但这并不是什么OP是请求,所以我没去那么远我的回答。显然,通过模板,您可以创建“完整”的东西来覆盖每个角落的情况,但通常情况下,代码也更加复杂。关于复杂性的好处在于它可以被归纳地证明,但是,仍然,为什么当你只需要一个螺丝刀时撬出一个千斤顶锤?我的回答是我认为OP是螺丝刀级别问题的一个螺丝刀驱动的答案。 – Jason