1、当typename 和class用在模板定义开始部分时,它们的意义相同
用代替,也就是说下面的语句是相同的。
template template
2、typename:显示告诉编译器 typename后面的内容代表一个类型
template class foo
{
void bar()
{
T::Bletch *p ;
}
}
那么这段代码中的T::Bletch *p 是什么意思呢? 是乘法表达式,还是一个指针定义?
T::Bletch是个成员还是个类型?实际上,如果使用类型名,就能解决这种困惑。
template class foo
{
void bar()
{
typename T::Bletch *p ; //告诉编绎器T::Bletch是一个类型,而不是成员名
}
}
阅读(783) | 评论(0) | 转发(0) |