Oh, you’ve got a circular include! CarComponent.h includes CarBase.h which includes CarComponent.h. So it was probably compiling fine until you added the CarBase include to the component header. This is something that is not allowed/supported in C++ generally (as opposed to just in UE4).
I assume you did that when you added the ACarBase* Car member of the component?
The thing that you’ll need to do is remove the include of CarBase.h and instead use a forward declaration of class ACarBase; towards the top of your header (generally these are placed immediately after includes and before any type declarations like the one for FCarMove). Then you would include CarBase.h in CarComponent.cpp so that it compiles properly.
Generally you only want to include the things that you absolutely have to. And if you’re only using a type as a pointer or reference, you don’t have to. When you need to know more than just “the type exists” (as when you include the FCarMove in FCarState) you have to do the include. It gets a bit muddier in UE4 because of the generated code it makes for reflection/blueprints, but that’s the general gist of it. Again, a solid grounding in general C++ can help here a lot.