woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

模板函数问题

在VC下定义一个
1template<typename T>
2list<T>::iterator  seqSearch( list<T>::iterator   first,    list<T>::iterator  last,   const  T&  target)  
3{  
4    list<T>::iterator   iter   =   first;  
5    while   (iter   !=   last   &&(*iter   !=   target))  
6        ++iter;  
7    return   iter;  
8}
 
但是始终无法通过编译,最后改为
1template<typename T>
2typename list<T>::iterator  seqSearch(typename list<T>::iterator   first,   typename list<T>::iterator  last,   typename const  T&  target)  
3{  
4    list<T>::iterator   iter   =   first;  
5    while   (iter   !=   last   &&(*iter   !=   target))  
6        ++iter;  
7    return   iter;  
8}
 
就好了
估计应该是编译器不知道list<T*>::iterator是代表一个类型
还是代表list<T*>类中的一个成员,叫做iterator

posted on 2008-08-20 16:56 大海 阅读(842) 评论(3)  编辑 收藏 引用 所属分类: stl

评论

# re: 模板函数问题 2008-08-20 17:08 啸天猪

标准规定,这种情况如果不使用typename关键字,总会被当作non-type name进行解释。

  回复  更多评论  

# re: 模板函数问题 2008-08-20 23:33 cexer

是的,这种细节就不要自己猜了,找本书看看,效率高些。  回复  更多评论  

# re: 模板函数问题 2008-08-20 23:53 x-matrix

模板内使用模板参数需指定typename,以标明它是个类型。
另,这个实现是个练习吧。  回复  更多评论  

posted on 2008-08-31 21:34 肥仔 阅读(257) 评论(0)  编辑 收藏 引用 所属分类: C++ 模板


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