すみません>>717に追記なんですが
切り替えるコードでは、クラスA、クラスBは未知とします。
例えば、切り替えるクラスの型だけ文字列を比較して分岐するということはしないということです。
ようするにObjective-CのNSCodingのようなことをやりたいのです。
ポインタ(正確にはshared_ptr)で参照するオブジェクトを、型情報を保ったままディスクに保存し、
元の型として復元したいのです。