2007年8月14日星期二

c++中引入typename的原因

c++中typename的引入的原因
template <class T>
class myClass
{
typename T::SubType *ptr;//如果没有typename 则T::SubType被解释为class T的静态变量,则此语句被解释为乘法
}
正确使用上述模板
myClass<Q> x;
此时得保证Q中有类型SubType,可使用两种方法
1、
class Q
{
typedef int SubType;
}
2、
class Q
{
class SubType;
}
作为一般标准,没有typename修饰的任何标识符号都被视为一个值,如 T 在template中被标识了class/typename,所以T是一个类型,而T::SubType如果没有标识typename则被视为一个数值变量

没有评论: