the overload of the ++ operator can be defined like any other function.
So I've kept it directly after the enum definition to make it clear, that there is a ++ operator for state, and if someone adds new states to the enum, he must also adopt the ++ operator.
In the runFSM() you just use state++;