定义iterator出错is not derived from type
我定义了一个类
#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