在网上下载的一个程序里的。
程序里使用了CMap定义了两个MAPtemplate<>
inline UINT AFXAPI HashKey(unsigned int& key)
{
// default identity hash - works for most primitive values
return ((UINT)(void*)(unsigned int)key) >> 4;
}typedef CMap<unsigned int, unsigned int&, ClassA*, ClassA* > MapA;
typedef CMap<unsigned int, unsigned int&, ClassB*, ClassB* > MapB;
但在程序里没有发现调用HashKey(unsigned int& key),只调用了一个CMap的InitHashTable
问题1:template<>在这里有什么作用?
问题2:inline UINT AFXAPI HashKey(unsigned int& key)没有用干嘛要写上

解决方案 »

  1.   

    问题2:inline UINT AFXAPI HashKey(unsigned int& key)没有用干嘛要写上答:有用,对于频繁使用的函数inline可加快效率
      

  2.   

    我是说,程序里没有调用这个函数,为什么要写上?
    是不是CMap的InitHashTable在内部调用了这个全局函数,在这个程序中重载一下只是把它变为inline加快速度?
      

  3.   

    函数特化
    可能CMap里面使用了,你在HashKey中下个断点不就知道哪里调用了。
      

  4.   

    不过还是不明白template<>的用处