CMap这样用为什么会出错?该怎么解决

CMap这样用为什么会出错?
int main(int argc, char* argv[])
{
CMap<int,int&,CPoint,CPoint&> MyMap;

MyMap.InitHashTable(257);

for (int i=0; i < 30000; i++)
{
CPoint ipoint(i,i);
MyMap.SetAt(i, ipoint);
}

CPoint TestPoint;
MyMap.Lookup(30, TestPoint);

return 0;
}

错误出在:MyMap.Lookup(30, TestPoint);
error C2664: 'Lookup' : cannot convert parameter 1 from 'const int' to 'int &'

难道Lookup不是这样用吗?

------解决方案--------------------
CMap<int,int&,CPoint,CPoint&> MyMap
~~~~

改成

CMap<int,const int&, CPoint,CPoint&> MyMap
~~~~~~~~~~~