Include statements not being transferred down to other files?

I am currently writing a plugin, and for some reason my CPP file code gives errors if I do not include “Engine.h”. The thing that I find odd is that “Engine.h” is already included in my header file. Here is what is being referenced by what. CPP file includes a header file -> header file includes another header file -> header file includes “Engine.h”. So why do I have to include “Engine.h” in my CPP file in order for my code to work? I was under the impression that includes were mutually included, but I guess that’s no longer the case?

What’s the error exactly? Is it UHT parsing that generates it, or it’s a C++ error?