For me it skips most of your code whether iostream is included or not, and the reason is fairly obvious as soon as I step through it with the debugger: gameState is never initialized, so the statement "if(gameState != Uninitialized) return;" always causes it to "return;", which makes the program exit before doing anything else.
Why not just define a constructor for the Game class instead of this weird Start() function that has to check if it's called twice?