定义iterator出错is not derived from type
时间:2011-05-26
来源:互联网
我定义了一个类
#include <ext/hash_map>
template<class ENTRY>
class CacheMemory {
public:
template <class ENTRY1>
struct _MmeMap_ele : public CMapElement_limit_Mem
{
uint m_memidex;
bool m_isInUse;
ENTRY1 m_entry;//cache block content
uint m_way; //way number
};
typedef _MmeMap_ele<ENTRY> MmeMap_ele;
……
private:
typedef stdext::hash_map<uint, MmeMap_ele> CLimitmemMap;
typedef CLimitmemMap::iterator CLimitmemMap_Iter;
class CTable_limitNumber<CLimitmemMap, CLimitmemMap_Iter, uint, MmeMap_ele> m_ctable_limitnumber;
……
}
在linux下编译的时候在typedef CLimitmemMap::iterator CLimitmemMap_Iter;这一行报错了
error:type'__gnu_cxx::hash_map<unsigned int,CacheMemory<ENTRY>::MmeMap_ele<ENTRY>,__gnu_cxx::hash<unsigned int>,std::equal_to<unsigned int>,std::allocator<CacheMemory<ENTRY>::MmeMap_ele<ENTRY>>>' is not derived from type 'CacheMemory<ENTRY>'
请问这个错误是什么意思呢,要怎么解决?
#include <ext/hash_map>
template<class ENTRY>
class CacheMemory {
public:
template <class ENTRY1>
struct _MmeMap_ele : public CMapElement_limit_Mem
{
uint m_memidex;
bool m_isInUse;
ENTRY1 m_entry;//cache block content
uint m_way; //way number
};
typedef _MmeMap_ele<ENTRY> MmeMap_ele;
……
private:
typedef stdext::hash_map<uint, MmeMap_ele> CLimitmemMap;
typedef CLimitmemMap::iterator CLimitmemMap_Iter;
class CTable_limitNumber<CLimitmemMap, CLimitmemMap_Iter, uint, MmeMap_ele> m_ctable_limitnumber;
……
}
在linux下编译的时候在typedef CLimitmemMap::iterator CLimitmemMap_Iter;这一行报错了
error:type'__gnu_cxx::hash_map<unsigned int,CacheMemory<ENTRY>::MmeMap_ele<ENTRY>,__gnu_cxx::hash<unsigned int>,std::equal_to<unsigned int>,std::allocator<CacheMemory<ENTRY>::MmeMap_ele<ENTRY>>>' is not derived from type 'CacheMemory<ENTRY>'
请问这个错误是什么意思呢,要怎么解决?
作者: smart_hh 发布时间: 2011-05-26
typedef CLimitmemMap::iterator CLimitmemMap_Iter;
改成
typedef stdext::hash_map<uint, MmeMap_ele>::iterator CLimitmemMap_Iter;
吧
改成
typedef stdext::hash_map<uint, MmeMap_ele>::iterator CLimitmemMap_Iter;
吧
作者: wzzww 发布时间: 2011-05-27
引用 1 楼 wzzww 的回复:
typedef CLimitmemMap::iterator CLimitmemMap_Iter;
改成
typedef stdext::hash_map<uint, MmeMap_ele>::iterator CLimitmemMap_Iter;
吧
typedef CLimitmemMap::iterator CLimitmemMap_Iter;
改成
typedef stdext::hash_map<uint, MmeMap_ele>::iterator CLimitmemMap_Iter;
吧
好好,我试试看!
作者: smart_hh 发布时间: 2011-05-27
引用 1 楼 wzzww 的回复:
typedef CLimitmemMap::iterator CLimitmemMap_Iter;
改成
typedef stdext::hash_map<uint, MmeMap_ele>::iterator CLimitmemMap_Iter;
吧
typedef CLimitmemMap::iterator CLimitmemMap_Iter;
改成
typedef stdext::hash_map<uint, MmeMap_ele>::iterator CLimitmemMap_Iter;
吧
是过了,报错还是是一样的,崩溃呀!
作者: smart_hh 发布时间: 2011-05-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28