标题:[求助]模版函数出问题了!
只看楼主
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
 问题点数:0 回复次数:12 
[求助]模版函数出问题了!
template<class T>
vector<T>::iterator find(vector<T>::iterator fir,vector<T>::iterator sec,
const T &key){
for (;fir != sec;++fir){
if (*fir == key)
return fir;
}
return sec;
}
定义了个模板函数查找vector中的元素,我想返回vector的迭代器。
编译出错,提示,参数类型嵌套依靠类型。

那我该怎么改?

奇怪的是在vc++6.0下能通过,连警告都没有!
搜索更多相关主题的帖子: 模版 vector fir sec iterator 
2007-06-10 16:23
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 

这样修改下看看行不行.
template<class T>
typename vector<T>::iterator find(typename vector<T>::iterator fir,typename vector<T>::iterator sec,
const T &key){
for (;fir != sec;++fir){
if (*fir == key)
return fir;
}
return sec;
}


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-06-10 16:30
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
回复:(wfpb)这样修改下看看行不行.template

还是不行!


Fight  to win  or  die...
2007-06-10 16:59
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
你用的什么编译器啊,vs2005加了typename后可以啊。。。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-06-11 02:49
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
我用的vc++2005啊,我再试试嘛!

Fight  to win  or  die...
2007-06-11 09:25
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
回复:(aipb2007)[求助]模版函数出问题了!

#include <iostream>
#include <string>
#include <vector>
using namespace std;

template<class T>
typename vector<T>::iterator find(vector<T>::iterator fir,vector<T>::iterator sec,
const T &key){
for (;fir != sec;++fir){
if (*fir == key)
return fir;
}
return sec;
}

int main(){
vector<int> ivec;
int temp;
while (cin >> temp)
ivec.push_back(temp);
vector<int>::iterator p = find(ivec.begin(),ivec.end(),100);
cout << *p << endl;
system("pause");
return 0;
}

f:\practise for vc++2005\practise\practise\prac.cpp(7) : warning C4346: 'std::vector<T>::iterator' : dependent name is not a type
prefix with 'typename' to indicate a type
f:\practise for vc++2005\practise\practise\prac.cpp(7) : error C2146: syntax error : missing ')' before identifier 'fir'
f:\practise for vc++2005\practise\practise\prac.cpp(8) : error C2059: syntax error : ')'
f:\practise for vc++2005\practise\practise\prac.cpp(16) : error C2143: syntax error : missing ';' before '{'
f:\practise for vc++2005\practise\practise\prac.cpp(16) : error C2447: '{' : missing function header (old-style formal list?)
Build log was saved at "file://f:\practise for vc++2005\practise\practise\Debug\BuildLog.htm"
practise - 4 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Fight  to win  or  die...
2007-06-11 09:27
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
我晕,参数里面也要加啊。。。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-06-12 09:18
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
回复:(aipb2007)[求助]模版函数出问题了!


怎么加了就行了啊,给我讲下好不?

Fight  to win  or  die...
2007-06-12 09:30
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
我也是看了typename与class的区别才知道的,你可以用baidu搜搜看,比我讲的清楚。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-06-12 10:02
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
不加typename编译器会以为是A::s是类的静态成员,而不认为是类型。。。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-06-12 10:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-146357-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.608951 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved