継承するクラスをC++より上位のレイヤーで1つだけに制限できるというなら、
グローバルな関数 Base *new_derivered_class(); を実装すればよくね?

それとも、継承先のクラスが存在しない場合Baseをnewする必要があるわけ?