找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1663|回复: 9

[求助]模版函数出问题了!

[复制链接]
发表于 2009-11-6 01:59:54 | 显示全部楼层 |阅读模式 IP:江苏扬州
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下能通过,连警告都没有!
发表于 2009-11-6 01:59:54 | 显示全部楼层 IP:江苏扬州
这样修改下看看行不行.
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;
}
回复

使用道具 举报

发表于 2009-11-6 01:59:55 | 显示全部楼层 IP:江苏扬州
还是不行!
回复

使用道具 举报

发表于 2009-11-6 01:59:56 | 显示全部楼层 IP:江苏扬州
你用的什么编译器啊,vs2005加了typename后可以啊。。。
回复

使用道具 举报

发表于 2009-11-6 01:59:58 | 显示全部楼层 IP:江苏扬州
我用的vc++2005啊,我再试试嘛!
回复

使用道具 举报

发表于 2009-11-6 01:59:59 | 显示全部楼层 IP:江苏扬州
#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 ==========
回复

使用道具 举报

发表于 2009-11-6 02:00:00 | 显示全部楼层 IP:江苏扬州
我晕,参数里面也要加啊。。。
回复

使用道具 举报

发表于 2009-11-6 02:00:01 | 显示全部楼层 IP:江苏扬州
怎么加了就行了啊,给我讲下好不?
回复

使用道具 举报

发表于 2009-11-6 02:00:02 | 显示全部楼层 IP:江苏扬州
我也是看了typename与class的区别才知道的,你可以用baidu搜搜看,比我讲的清楚。
回复

使用道具 举报

发表于 2009-11-6 02:00:03 | 显示全部楼层 IP:江苏扬州
不加typename编译器会以为是A::s是类的静态成员,而不认为是类型。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 19:19 , Processed in 0.291838 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表