注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

VC 2010编译错误:safetystl\safetylist.h(48): error C2061: 语法错误: 标识符“iterator”  

2010-12-01 11:40:30|  分类: 编译错误 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

错误信息:

safetystl\safetylist.h(48): error C2061: 语法错误: 标识符“iterator”

 

代码如下:


namespace SafetySTL
{
 template <class TNode>
 class CSafetyList
 {
 public:
  CSafetyList();
  ~CSafetyList();

 public:
  typedef list<TNode> SAFETY_LIST;

 protected:
  SAFETY_LIST m_list;
  CTL_CriticalSection m_lock;

 public:
  void Lock(){m_lock.Lock();};
  void Unlock(){m_lock.Unlock();};
  I_TL_Lock * GetLocker(){return &m_lock;};

 public:
  //添加尾部节点
  int Add(TNode & node);

 public:
  //移除节点
  int Delete(list<TNode>::iterator piter);                                            //出错处
  int DeleteAt(int i);

 public:
  //清空
  void DeleteAll();

  ///////////////////////////////////////////////////////////////////////
  //以下函数无需加锁
 public:
  //取得节点
  TNode * GetAt(int i);

 public:
  //取得节点数目
  LONG GetSize();
 };
};

 

原因应该是,list本身就是模板类,再对其进行模板封装,然后又使用了iterator ,就出了问题。这里需要自定义iterator 才可以!

试了一下,自定义iterator,确实可以解决,但是很复杂。所以直接去掉了这个函数:

  int Delete(list<TNode>::iterator piter); 


 

By:zhanyonhu

  评论这张
 
阅读(2103)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016