在一个C++头文件中,我看到了这段代码:
现在,据我理解,引用Schildt的《C++完全参考手册》所述,关键字typename可以被替换为class。第二次使用typename是为了告诉编译器,在模板声明中使用的名称是类型名称而不是对象名称。
同样地,您可以使用关键字typedef定义新的数据类型名称。您实际上并没有创建一个新的数据类型,而是为现有类型定义一个新名称。
然而,您能否解释一下上面这行代码的含义,其中typedef和typename组合在一起?语句中的“::”表示什么意思?
typedef typename _Mybase::value_type value_type;
现在,据我理解,引用Schildt的《C++完全参考手册》所述,关键字typename可以被替换为class。第二次使用typename是为了告诉编译器,在模板声明中使用的名称是类型名称而不是对象名称。
同样地,您可以使用关键字typedef定义新的数据类型名称。您实际上并没有创建一个新的数据类型,而是为现有类型定义一个新名称。
然而,您能否解释一下上面这行代码的含义,其中typedef和typename组合在一起?语句中的“::”表示什么意思?
typename
在typedef
内外具有相同的用途。一个更加现实(有点)的例子可以是typedef typename std::vector<T>::iterator Iter;
。 - chris