C++——结合typedef和typename的语句的含义

C++ - meaning of a statement combining typedef and typename

本文关键字:语句 结合 typedef C++ typename      更新时间:2023-10-16

在C++头文件中,我看到的代码是:

typedef typename _Mybase::value_type value_type;

现在,据我所知,引用Schildt的《C++完整参考》。typename可以用关键字class代替,typename的第二个用途是通知编译器模板声明中使用的名称是类型名,而不是对象名。

类似地,您可以使用关键字typedef定义新的数据类型名称。你不是实际上是在创建一个新的数据类型,而是为现有数据类型定义一个新名称类型

然而,你能确切地解释一下上面这行代码的含义吗?typedeftypename组合在一起。声明中的"::"意味着什么?

typedef正在定义一个新类型,以便在代码中使用,就像速记一样。

typedef typename _MyBase::value_type value_type;
value_type v;
//use v

typename让编译器知道value_type是一个类型,而不是_MyBase的静态成员。

CCD_ 9是该类型的范围。这有点像"在",所以value_type"在"_MyBase。或者也可以被认为是包含的。

typename表示_Mybase::value_type是类型的名称,因此typedef可以与此事实相关。