您的位置:C++老鼠窝编程 【提问与解答】 正文
站内文章搜索
热门内容
推荐内容
最新内容
广告信息

使用typename关键字解除疑惑


使用typename关键字解除疑惑
(hangwire发表于2002-8-28 17:14:28)

[问题]:
C 中关键字typename有什么作用?什么时候要用它来代替<class T>?它们两者之间有什么区别?

[解答]:
简单地说,当typename和class用在模板定义开始部分时,它们的意义相同,但有时typename是用来告诉编译器模板中有一个表示类型名。比如,假设你有一个下面这样的模板:

template<class T> class foo {
void bar() {
T::Bletch * p;
……
}
}

那么这段代码中的T::Bletch * p是什么意思呢?是乘法表达式,还是一个指针定义?T::Bletch是个成员还是个类型?实际上,如果你使用类型名,就能解决这种困惑。

template <class T> class foo {
void bar() {
typename T::Bletch * p;
……
}
}

现在编译器知道T::Bletch是一个类型,而不是成员名。在模板定义里,你也能用<typename T>代替<class T>。也就是说下面的语句时相同的:
template<class X>...
template<typename X>...


 
点这里复制本页地址发送给您QQ/MSN上的好友
相关文章

如何取得Windows的语言版本信息?
如何从程序中调用外壳的文件属性对话框?
如何改变对话或窗体视窗的背景颜色
C#编程如何获取与另一个进程关联的应用程序
C#编程如何获取某个进程的主窗口?
如何调试Windows外壳扩展程序(Shell Exten
获取硬盘ID信息及网卡MAC地址的代码
获取硬盘详细信息的源代码
一段日期和时间的处理例程代码
如何保证在应用程序使用的类只有一个对象实
如何将窗口文本或客户区内容以CF_BITMAP格式
禁止/启用屏幕保护及系统热键等
如何激活当前屏幕保护程序
如何激活和关闭IE浏览器
如何给树控件加入工具提示
如何获取系统信息框的路径
Win32文件拖拽操作以及文件信息的获取
查找“开始”按钮的代码
CString使用技巧
给 Windows 2000 加锁的小技巧

相关评论


本文章所属分类:首页 【提问与解答】