c++初学者

专注技术开发

模板函数问题

在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 大海 阅读(1672) 评论(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,以标明它是个类型。
另,这个实现是个练习吧。  回复  更多评论   


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