C#のコードだと.hと.cppに分けるみたいなことはないっぽいので、というかすくなくともサンプルコードではそういうことはないのでなんとなくそれっぽくC++で書いてきて、いままでほぼ問題なかったのでそのままだったんですが、今回はヘッダと分けたほうがよかったですね。
いま仕事で作っているWindowsソフトのマウスクリックに対する振る舞いを割り振りするのにStateパターンを使っています。
以前関わったソフトは、"特定のオブジェクトを選択した状態で右でドラッグするとxxxをするけどドラッグじゃなくてただの右クリックだったらoooで、オブジェクトを選択していないと..."みたいなややこしい状態遷移をその都度追加したとおもわれる変数の値の組合せによって判断してました。
死んだら良いのにと思いました。
今回のコードです
http://www.dofactory.com/Patterns/PatternState.aspx#_self2
https://github.com/TakahashiShuuhei/DesignPatternPractice/blob/master/State.cpp