補足のために、FieldクラスのtimeForward()に仮想コードを追加したよ。
どういう設計か少しは分かりやすくなるはず・・・
http://ideone.com/kfPq3