Класс поиска структуры массива в C ++

Я пытаюсь создать массив структуры, который связывает входные строки с классами следующим образом:

struct {string command; CommandPath cPath;} cPathLookup[] = {
    {"set an alarm", AlarmCommandPath},
    {"send an email", EmailCommandPath},
    {"", NULL}
};

который будет использоваться следующим образом:

CommandPath *cPath = NULL;
string input;
getline(cin, input);
for(int i = 0; cPathLookup[i] != ""; i++) {
        if(cPathLookup[i].command == input)
                cPath = new cPathLookup[i].cPath;
}

Очевидно, что этот код не имеет смысла, но я думаю, что мое намерение очевидно - в зависимости от ввода, я бы хотел, чтобы cPath был инициализирован как новый AlarmCommandPath или новый EmailCommandPath. Я мог бы справиться с этим с помощью функции, возвращающей экземпляр в зависимости от ввода, но целая последовательность ifs кажется просто не элегантной.

Следует также отметить, что в случае, если это не очевидно и не важно, что AlarmCommandPath и EmailCommandPath являются производными от CommandPath, а CommandPath является абстрактным классом.

Спасибо за любую помощь, которую вы можете предложить.

РЕДАКТИРОВАТЬ: я только заметил, что, несмотря на абстрактность CommandPath, у меня есть объявление:

CommandPath *cPath = NULL;

в рабочем коде. Почему это компилируется?

Ответы на вопрос(0)

Ваш ответ на вопрос