Is the class CEntity::CBullet known at the point of deletion?
That is, is CBullet.hpp included in the source code file that the function EndContact is in?
If not, and CEntity::CBullet is just forward declared (with 'class CBullet;' somewhere) then that could explain the behaviour you're seeing. Although I believe most compilers would warn you.
edit: There's a discussion about this behaviour here: http://stackoverflow.com/questions/4325154/delete-objects-of-incomplete-type