封装含有std:map的模板类遇到的有关问题,无法定义iterator
封装含有std::map的模板类遇到的问题,无法定义iterator
封装一个类模板类,其中有个成员是std::map
template <class KEY,class VALUE>
class CMyMap
{
public:
...
void* Lookup(KEY key);
std::map <KEY,VALUE> moContent;
...
}
template <class KEY,class VALUE>
inline void* CMyMap <KEY,VALUE> ::Lookup(KEY key)
{
BOOL lbResult = FALSE;
CAutoLock moAutoLock(mstrAccessCritcalSection);
//这一行会报错
std::map <KEY,VALUE> ::iterator loContentIterator;
loContentIterator = moContent.find(key);
if(loContentIterator == moContent.end())
。。。。
}
在Linux下编译会提示error: expected `; ' before "loContentIterator "。
不知道是什么原因,如何解决。整了两天了,请高手指点。
------解决方案--------------------
std::map <KEY,VALUE> ::iterator loContentIterator;
改为:
typename std::map <KEY,VALUE> ::iterator loContentIterator;
封装一个类模板类,其中有个成员是std::map
template <class KEY,class VALUE>
class CMyMap
{
public:
...
void* Lookup(KEY key);
std::map <KEY,VALUE> moContent;
...
}
template <class KEY,class VALUE>
inline void* CMyMap <KEY,VALUE> ::Lookup(KEY key)
{
BOOL lbResult = FALSE;
CAutoLock moAutoLock(mstrAccessCritcalSection);
//这一行会报错
std::map <KEY,VALUE> ::iterator loContentIterator;
loContentIterator = moContent.find(key);
if(loContentIterator == moContent.end())
。。。。
}
在Linux下编译会提示error: expected `; ' before "loContentIterator "。
不知道是什么原因,如何解决。整了两天了,请高手指点。
------解决方案--------------------
std::map <KEY,VALUE> ::iterator loContentIterator;
改为:
typename std::map <KEY,VALUE> ::iterator loContentIterator;