1. You wont get the linker errors if you just declare the
helper function in the User.h and put the function body in User.cpp
Put the helper in the CUser files.

2. You do not have to worry about adding members to the map.

if you have
CMap<whatever> m_MyMap;

then just call

m_MyMap.Serialize(). and forget about it. the archive will
reconstruct the map for you.