读书人

求解模板种定义报错

发布时间: 2013-04-21 21:18:07 作者: rapoo

求解模板类定义报错
在vs2012 下编译出错
template<class T> class CMy_list : public list<T>
{
public:

inline void SetFront()
{
iter = begin();
}

inline bool NotBack()
{
return iter != end() ? true : false;
}

inline void GoNext()
{
iter++;
}

inline T GetNow()
{
if(size() <= 0) return NULL;
return *iter;
}

inline T GetFront()
{
if(size() <= 0) return NULL;

T get = front();
return get;
}

inline T GetBack()
{
if(size() <= 0) return NULL;

T get = back();
return get;
}

inline T CutNow_And_GoNext()
{
if(size() <= 0) return NULL;

iter_tmp = iter;
iter++; //Next

T cut = *iter_tmp;
erase(iter_tmp);
return cut;
}

inline T CutTop_And_GoNext()
{
if(size() <= 0) return NULL;

iter_tmp = iter = begin();
iter++; //Next

T cut = *iter_tmp;
erase(iter_tmp);
return cut;
}

inline T CutFront()
{
if(size() <= 0) return NULL;

T cut = front();
pop_front();
return cut;
}

inline T CutBack()
{
if(size() <= 0) return NULL;

T cut = back();
pop_back();
return cut;
}

list <T>::iterator iter; <------报错
list <T>::iterator iter_tmp;<--------报错
list <T>::reverse_iterator riter;
list <T>::reverse_iterator riter_tmp;
};

错误如下
警告1warning C4346: “std::list<_Ty,_Alloc>::iterator”: 依赖名称不是类型d:\project\zvm\gui_zvm\gui_zvm\ZVM_SHARE.h1771GUI_ZVM
警告4warning C4346: “std::list<_Ty,_Alloc>::iterator”: 依赖名称不是类型d:\project\zvm\gui_zvm\gui_zvm\ZVM_SHARE.h1781GUI_ZVM
错误3error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 intd:\project\zvm\gui_zvm\gui_zvm\ZVM_SHARE.h1771GUI_ZVM
错误7error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 intd:\project\zvm\gui_zvm\gui_zvm\ZVM_SHARE.h1781GUI_ZVM
错误6error C2875: using 声明导致“std::list<_Ty,_Alloc>::iterator”的多次声明d:\project\zvm\gui_zvm\gui_zvm\ZVM_SHARE.h1781GUI_ZVM
错误2error C2146: 语法错误: 缺少“;”(在标识符“iter”的前面)d:\project\zvm\gui_zvm\gui_zvm\ZVM_SHARE.h1771GUI_ZVM
错误5error C2146: 语法错误: 缺少“;”(在标识符“iter_tmp”的前面)d:\project\zvm\gui_zvm\gui_zvm\ZVM_SHARE.h1781GUI_ZVM

[解决办法]
你继承的是STL中的list吗? 可以拿来继承吗?
[解决办法]
list?<T>::iterator?iter;

改为

typename list?<T>::iterator?iter;

其它一样改。

读书人网 >C++

热点推荐