Criar dinamicamente uma instância de uma classe a partir de uma string que contém o nome da classe em C ++

Digamos que eu tenho uma classe base com 100 filhos:

class Base { 
  virtual void feed();
  ...   
};
class Child1 : public Base {
  void feed();  //specific procedure for feeding Child1
  ... 
};
...
class Child100 : public Base { 
  void feed();  //specific procedure for feeding Child100
  ...
};

No tempo de execução, quero ler um arquivo que contém quais filhos criar e alimentar. Digamos que eu li o arquivo e o vetor de strings "names" contém os nomes das classes filho (por exemplo, Child1, Child4, Child99). Agora vou percorrer essas seqüências, criar uma instância do filho específico e alimentá-lo com seu procedimento de alimentação específico:

vector<Base *> children;    
for (vector<string>::iterator it = names.begin(); it != names.end(); ++it) {
  Base * child = convert_string_to_instance(*it)       
  child->feed()
  children.push_back(child);
}

Como eu criaria a função convert_string_to_instance (), de modo que, se a string "Child1" retornar uma "nova Child1", se o argumento da string for "Child4", ela retornará uma "nova Child4", etc

<class C *> convert_string_to_instance(string inName) {
  // magic happens
  return new C;  // C = inName

  // <brute force?>
  // if (inName == "Child1")
  //   return new Child1;
  // if (inName == "Child2")
  //   return new Child2;    
  // if (inName == "Child3")
  //   return new Child3;    
  // </brute force>
  }

questionAnswers(7)

yourAnswerToTheQuestion