thanks for complements. you are absolutely right, but this project was made for education purpose, i don't know if i will make it full game or stop at where it become. since i have implemented most of essential parts like road geometries and game's entities and collision.
I think that it's easier to study ways to structure stuff in smaller projects, because it's pretty hard to do in bigger projects, because you have to move a lot of things around. Once you understand how to structure and decouple stuff in your smaller project, you'll start writing your next projects using this structure.
Oh, and there are other benefits, of course. Once you put start putting stuff in .h and .cpp recompilation will be a lot faster, because there'll be less stuff to recompile. Now you're recompiling everything in your one file.
This isn't a problem in a small project, probably, but will become much bigger once the project starts getting bigger.