我是vs 2003,就是vc71.然后准备使用STLport。
www.stlport.com下载了5.0RC2然后解压缩 编译通过后。
vc 里面配置下include目录和lib目录。
然后弄一个简单的试一试#include <hash_map>typedef hash_map<HWND,UINT> HWNDMAP;class......
{
     HWNDMAP m_map;
}...::OnInitDialog()
{
   .....
    m_map[m_hWnd] = 1;
}然后就编译通过不了。但是如果我换成用VC自己的hash_map就可以,这个是怎么回事?

解决方案 »

  1.   

    如果我不用HWND用UINT就可以
    typedef hash_map<UINT,UINT> HWNDMAP;
      

  2.   

    报告什么错误你总得说一下吧……难道是没看到HWND的定义?
      

  3.   

    d:\common_lib\STLport-5.0RC2\stlport\stl\_hashtable.h(548): error C2064: 项不会计算为接受 1 个参数的函数
            d:\common_lib\STLport-5.0RC2\stlport\stl\_hashtable.h(548) : 编译类模板成员函数“stlp_std::hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All>::size_type stlp_std::hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All>::_M_bkt_num_key(const stlp_std::hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All>::key_type & ,size_t) const”时
            with
            [
                _Val=stlp_std::hash_map<HWND,UINT>::value_type,
                _Key=stlp_std::hash_map<HWND,UINT>::key_type,
                _HF=stlp_std::hash<HWND >,
                _Traits=stlp_std::hash_map<HWND,UINT>::_HashMapTraits,
                _ExK=stlp_std::_Select1st<stlp_std::hash_map<HWND,UINT>::value_type>,
                _EqK=stlp_std::equal_to<HWND >,
                _All=stlp_std::allocator<stlp_std::pair<const HWND ,UINT>>
            ]
            d:\common_lib\STLport-5.0RC2\stlport\stl\_hash_map.h(68) : 参见对正在编译的类模板实例化“stlp_std::hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All>”的引用
            with
            [
                _Val=stlp_std::hash_map<HWND,UINT>::value_type,
                _Key=stlp_std::hash_map<HWND,UINT>::key_type,
                _HF=stlp_std::hash<HWND >,
                _Traits=stlp_std::hash_map<HWND,UINT>::_HashMapTraits,
                _ExK=stlp_std::_Select1st<stlp_std::hash_map<HWND,UINT>::value_type>,
                _EqK=stlp_std::equal_to<HWND >,
                _All=stlp_std::allocator<stlp_std::pair<const HWND ,UINT>>
            ]
            d:\kxywork\vs2003\testSTLport\testSTLportDlg.h(25) : 参见对正在编译的类模板实例化“stlp_std::hash_map<_Key,_Tp>”的引用
            with
            [
                _Key=HWND,
                _Tp=UINT
            ]
      

  4.   

    有可能是因为STLport没有实现针对HWND的less函数,而vc7里实现了
      

  5.   

    同意的goodboyws(深夜不眠者)说明,typedef hash_map<HWND,UINT> HWNDMAP;
    =>
    typedef hash_map<UINT,HWND> HWNDMAP;
      

  6.   

    要么自己实现less,要么换键值