开发者社区> anker_rabbit> 正文

模板类中定义list<T>::iterator iter在g++下不识别的解决办法

简介:
+关注继续查看

  今天在练习hash table时候,准备采用vetor和list进行实现,当我定义一个模板类的迭代器时候,出现错误。于是我在网上找找如何处理这个问题,最终解决了问题,记录在此以后,便于以后查看。我写的测试程序如下:

复制代码
 1 #include <iostream>
 2 #include <vector>
 3 #include <list>
 4 using namespace std;
 5 
 6 template <class T>
 7 class Test
 8 {
 9 public:
10     void insert(const T& x)
11     {
12         lists.push_back(x);
13     }
14     void display()
15     {
16         list<T>::iterator iter; //模板类型的迭代器
17         for(iter = lists.begin();iter != lists.end();iter++)
18             cout<<*iter<<" ";
19         cout<<endl;
20     }
21 private:
22     list<T> lists;
23 };
24 
25 int main()
26 {
27     Test<int> t;
28     t.insert(10);
29     t.insert(20);
30     t.insert(30);
31     t.insert(40);
32     t.display();
33     return 0;
34 }
复制代码

编译程序时候提示如下错误:在第16 行 error: need 'typename' before 'std::list<T>::iterator' because 'std::list<T>' is a dependent scope|
提示的意思是说在list<T>前面需要用typename限定一下,因为编译器不知道list<T>::iterator是代表一个类型。于是下将16行代码:

list<T>::iterator iter; 改为 typename std::list<T>::iterator iter;

程序顺利通过编译。参考:http://blog.csdn.net/markman101/article/details/7172918

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Confluence 6 导入模板的备注
创建你自己的模板组件(template bundles)。你可以使用插件(add-on,也可以被称 plugin)来创建模板组件然后将这些模板组件上传到你的 Confluence 站点中。
734 0
未能解析目标框架“.NETFramework,Version=v4.0”的 mscorlib 错误的解决办法
VS2010有时候莫名出现下面问题: 未能解析目标框架“.NETFramework,Version=v4.0”的 mscorlib 错误 相关的工程出现这个问题,可能是使用同步盘同步的引起的。
2514 0
安装Tomcat提示Failed to install Tomcat6 service...的解决办法
最近我重装了一下tomcat 6.0,可不知为什么,总是安装不下,在安装进度条显示到三分之一处的时候,总是弹出failed toinstall Tomcat6 service的警示,具体显示如...
759 0
Oracle 11g sys,system 密码忘记设置解决办法
原文: Oracle 11g sys,system 密码忘记设置解决办法 1.启动sqlplus 2.请输入用户名:  sqlplus/as sysdba 3.输入口令: 直接回车 4.连接到:    Oracle Database 11g Enterprise Edition Release 11.
1067 0
刷完OpenWrt在浏览器无法访问的解决办法
其实问题很明显、 是因为刷了trunk版固件、 并没有集成luci、 那接下来就是装luci、但是装luci需要联网(不过其实不联网其实也是可以安装的、) 我说的联网是让路有联网、而不是网线接路由,路由接电脑、然后电脑拨号上网、这种联网、 如何让路由联网呢? 1、最简单的方法、如果你有两个路由、或者...
6611 0
此OracleParameterCollection 的 Count=4 的索引 4 无效 的解决办法 NHibernate
概述:      当用Nhibernate操作主从表时,往主表插入数据时,当执行到提交事务时出现如下错误: 此 OracleParameterCollection 的 Count=4 的索引 4 无效。
1270 0
"org.jboss.netty.internal.LoggerConfigurator".DESCRIBED is already registered 的解决办法
今天在jboss 6.2 EAP上部署一个项目时,报以下错误: org.jboss.msc.service.DuplicateServiceException: Service jboss.pojo.
1192 0
+关注
103
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载