那谁的技术博客

感兴趣领域:高性能服务器编程,存储,算法,Linux内核
随笔 - 210, 文章 - 0, 评论 - 1183, 引用 - 0
数据加载中……

使用typename的一个说明

时常看到这样的代码,比如以下这两段代码:
list<int>::iterator iter1;
list
<T>::iterator iter1;

前者没有问题可以顺利的编译过去,但是后者时常会报一个警告,为什么呢?
原因如下:
首先,list<T>是一个模板类,在模板实例化以前是无法确定起真正的类型的,也就是说编译阶段是无法知道到底是哪个类的,那么可能出现以下一种情况:某个类中恰好有一个静态成员为iterator,此时就会出错了。
因此为了明确的指出这是一个类型而不是一个成员,我们需要在前面加上typename,也就是:
typename list<T>::iterator iter1;
typename在这里用于说明后面紧跟着的字符串表示的是一个类型。

posted on 2006-03-22 23:41 那谁 阅读(1900) 评论(0)  编辑 收藏 引用 所属分类: C\C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理