读书人

封装含有std:map的模板类遇到的有关问

发布时间: 2012-03-07 09:13:51 作者: rapoo

封装含有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;

读书人网 >C++

热点推荐