CMAPの定義例

CMap< int, int, MY_STRUCT, MY_STRUCT& > myMap1;

この例は MY_STRUCT 値を格納し、 int のキーにアクセスし、参照によって MY_STRUCT のアクセスされた項目を返します。

CMap< CString, LPCTSTR, CPerson, CPerson& > myMap2;

この例では CPerson 値を格納し、 CString のキーにアクセスし、アクセスされた項目への参照を返します。
Key パラメーターが 型 CString であり、 KEY_TYPE パラメーターが型 LPCSTRであるため、キーは項目の種類 CString としてマップに格納されますが、ポインター型 LPCSTRして SetAt の関数で参照されます。

CMap< CString, CString&, CPerson, CPerson& > myMap2;

これだとエラーになる

ネタ元