2 zay999abc zay999abc 于 2015.07.08 16:14 提问

在C++ primer中看到一行代码,有点不解。
c++
 template <typename T> class Blob{
 public:
            typedef typename std::vector<T>::size_type size_type;

为什么中间有个typename,而不是直接写成这样:

 typedef std::vector<T>::size_type size_type;

谢谢啦。

4个回答

oyljerry
oyljerry   Ds   Rxr 2015.07.08 16:24
已采纳

这个是在模板定义中,在你的代码中std::vector::size_type 这个是一个类型,而不是一个变量,所以需要告诉编译器,它是一个类型,而不是变量
所以需要加typename来进行修饰,告诉编译器,不然编译器就会有出错。

caozhy
caozhy   Ds   Rxr 2015.07.08 16:16
u010520490
u010520490   2015.07.08 16:16

typename 是类型名称哦.只是提示你这个值是一个类型的名称.

u010520490
u010520490   2015.07.08 16:17

typename 是类型名称哦.只是提示你这个值是一个类型的名称.

Csdn user default icon
上传中...
上传图片
插入图片