在C++ primer中看到一行代码,有点不解。

 template <typename T> class Blob{
 public:
            typedef typename std::vector<T>::size_type size_type;

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

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

谢谢啦。

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

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

参考:http://blog.csdn.net/fallstones/article/details/6265764

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