I suspect that this is dying in the copy constructor for your map. Without seeing EntityAttribute, I'm not sure why, but here's what I think is happening: Your GetMap method is returning a temporary map variable that is a copy of your class's map variable. So, when you call GetMap, your map is copied to a temp variable (using the copy constructor, which will call the copy constructor for EntityAttribute). This temporary variable is then assigned to whatever calls GetMap.
This is almost certainly not what you want. You probably want to return the class's map for read/write access, in which case, you should either return the map by reference (be careful with this route), or return a pointer to the map.
Hope this helps.