Most likely, in timer.h you are #including player.h, which then #includes timer.h also. But because of the header guards, the content of timer.h is then ignored. The consequence is that player.h is parsed ahead of timer.h. The end result is you can't have two clases mutually depending on each others implementation in that way. You need to decide which one is the more basic one that the other uses.
If, in the header, A uses B, but B only uses pointers to A, you can put B first, and then forward declare A with a statement like.
class A;
In that case B.h does not #include A.h for the full class.