天下

记录修行的印记

C++Templates中的typename关键字

关键词typename 
 
关键词typename 是C
++ 标准化过程中被引入的,目的在于向编译器说明template 内的某个标识符是个类型(而不是其它什么东西)。
考虑下面的例子: 
template 
<typename T> 
class MyClass { 
    typename T::SubType 
* ptr; 
    
// 
}; 
 
在这里,第二个typename关键词的意思是:SubType 是 
class T 内部定义的一个类型,从而ptr是一个「指向 T::SubType 类型」的指针。 
 
如果上例没有使用关键词 typename ,SubType 会被认为是 
class T 的一个 static 成员,于是被编译器理解为一个具体变量或一个对象,导致以下式子: 
T::SubType 
* ptr 所表达的意义变成:class T的static成员SubType 与 ptr 相乘。 
 
通常 如果 某个与 template parameter 相 关的名 称是个 类型(type) 时 ,你就必须加上关键字typename。

posted on 2012-02-18 14:46 天下 阅读(385) 评论(0)  编辑 收藏 引用 所属分类: C/C++


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


<2012年3月>
26272829123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

常用链接

留言簿(4)

随笔分类(378)

随笔档案(329)

链接

最新随笔

搜索

最新评论