Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 利用 typename 消除歧义
【标  题】:利用 typename 消除歧义
【关键字】:typename
【来  源】:http://blog.csdn.net/steven216/archive/2007/02/10/1507132.aspx

利用 typename 消除歧义

Your Ad Here

template<class T>
class Ptr
{
public:
 typedef T Emp;

 void insert(Emp a){
     value += a;
 }

 void show()
 {
  std::cout<<"the result is "<<value<<"\n";
 }
 Ptr():value( T()){}
private:
 Emp value;
};

template<class T>
void fill(T &c,  T::Emp a[],int len) {

 for ( int i = 0; i < len; ++i)
     c.insert(a[i]);

在fill 模板上下文中,编译器没有足够的信息来决定嵌套的名字 Emp到底是一类型名字,还是一个非类型的名字。

C++ 标准约定,在这种情形下,嵌套的名字被假定为一个非类型的名字。

 

以下加上typename 显示说明T 为一个类类型

template<class T>
void fill(T &c, typename T::Emp a[],int len) {

 for ( int i = 0; i < len; ++i)
     c.insert(a[i]);

关于CLR中堆排序若干问题的代码实现:【上一篇】
看到"80后"第一个想起的人:【下一篇】
【相关文章】
  • C++中typename关键字的使用方法和注意事项
  • C++箴言:理解typename的两个含义
  • VBScript 中的TypeName VarType
  • template declarations(模板声明)中 class 和 typename 的异同
  • C++ Template 中的typename、class关键字
  • 使用typename的一个说明
  • 再谈typename
  • typedef && typename
  • VBScript TypeName 函数
  • 【随机文章】
  • 第七口口水-程序员到30岁就要转行?
  • MDS-E10专业MD录音机
  • 用JScrollPane局部刷新当前可视区域的table
  • FastNet v5.6.3 For D5 FullSource (D7可用)
  • ASP后台快速调用Mysql 数据库
  • 做火葬烧尸工的日子
  • 一个简单的摄像头视频浏览和捕获的程序(VC2003)
  • 雾化效果
  • MySQL:忘记超级用户口令,怎么办?
  • 编写测试用例有些时候可以采用随机战略
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.