リフレクションの無いC++でコンパイル時に存在しない未知のクラスを扱うには
汚いけど生成クラスを使うのが手かと。
http://ideone.com/4A5E1C
>>729の通りシリアサイザーを仮想にしておけばOK