Создание классов по имени с фабричным образцом

Предположим, у меня есть список классовA, B, C, ... которые все наследуют отBase.

Я получаю имя класса в виде строки от пользователя, и я хочу создать экземпляр нужного класса и вернуть указатель наBase, Как бы вы это реализовали?

Я подумал об использовании хеш-таблицы с именем класса в качестве ключа и указателем на функцию, которая создает экземпляр нужного класса и возвращаетBase *.

Тем не менее, я думаю, что я мог бы использовать здесь фабричный шаблон и сделать его намного проще, но я просто не совсем хорошо его помню, поэтому я хотел попросить совета.