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