求解模板类定义报错
在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;
其它一样改。