日期:2014-05-16  浏览次数:20507 次

linux下的hash_map的使用问题
我写了个模版,代码如下:

C/C++ code

#include <ext/hash_map>
#include <iterator>
#define HASHMAP_PREFIX __gnu_cxx

using namespace std;
using namespace HASHMAP_PREFIX;




template<typename Key, typename Value>
class CHashMapTemp
{
public:
   CHashMapTemp(){}
   ~CHashMapTemp(){}

     Value Find(Key k)
    {
                  //*********  问题所在
        HASHMAP_PREFIX::hash_map<Key, Value>::iterator it = m_HashMap.find(k);//问题就出在这行
      
          return (Value)NULL;

    }

private:
protected:
    HASHMAP_PREFIX::hash_map<Key, Value>    m_HashMap;
};




程序始终编译不过去,,如果我标准的那行改成
m_HashMap.find(k)
就可以编译过去。


可是这个代码在WINDOWS下可以编译过去,LINUX下怎么也编译不过去,,到底怎么回事????

------解决方案--------------------
好像是没有这个,得自己实现。
------解决方案--------------------
探讨
//********* 问题所在
HASHMAP_PREFIX::hash_map<Key, Value>::iterator it = m_HashMap.find(k);//问题就出在这行

------解决方案--------------------
加typename试试,防止iterator被当成静态变量了