Я нашел много постов, где было довольно ясно сказано, что функция производного класса не может быть назначена указателю функции базового класса. Поэтому я хочу знать, как подойти и решить следующую ситуацию:
Предположим, у меня есть следующая база class
class base {
protected:
typedef void (base::*base_fp)();
typedef std::map<std::string, base_fp> array;
array associativeArray;
};
Основная цель этого класса - иметь свойство associative-array
из functions
.
Итак, я хотел, чтобы каждый производный ребенок мог добавлять свои методы в «ассоциативный массив»
this->associativeArray["Method"] = &child::method; // from the child class
Мое первоначальное намерение использовать это состояло в том, чтобы вызывать различные методы в зависимости от требования без использования условных операторов. Это было бы в блоке try-catch для обработки случая несуществующего индекса. Поскольку мой оригинальный подход не возможен, так каков будет правильный способ сделать это?
РЕДАКТИРОВАТЬ: Пример использования
Предположим, что ассоциативный массив является массивом "алгоритма" functions
.
Тогда для пользовательского «алгоритма» ввода я смогу вызвать соответствующий метод, определенный в дочернем классе
(this->*associativeArray.at("algorithm"))();