CHealthBar HealthBar;
That is your problem.
When using a forward declaration, you can only use a POINTER to the object, you cant actually declare an instance, as the compiler has no idea of the actual composition and size of a forward declared class.
Change CHealthBar to a reference or pointer, and your code should work.
EDIT: This StackOverflow answer explains it in a bit more detail. So either change it so CEntity is aware of CHealthBar, or if you are going to continue using a forward declaration, make CHealthBar in CEntity a pointer or reference.
Pointer or reference as long as you don't dereference them. Its also worth noting that you can use a smart pointer so you don't have to use naked pointers.