C++で文字列からそのクラスを作るのはできないですか?

class base{};
class super1:public base{};
class super2:public base{};

という風になっていて

base *s1 = getClass("super1");  // base *s1 = new super1(); と等価
base *s2 = getClass("super2");  // base *s2 = new super2(); と等価

ってのをやりたいです

事前にこんなので登録して、ここから呼び出したいのですが…
なにかうまい方法は無いでしょうか

map<string, ???> classmap;
classmap["super1"] = super1;
classmap["super2"] = super2;