C ++ Получить указатель на функцию или оценить функцию, используя имя функции, хранящееся в строке - PullRequest
1 голос
/ 26 апреля 2011

Я работаю над парсером для естественного языка.Слова из естественного языка анализируются с понятиями, которые они представляют.Цель состоит в том, чтобы позволить роботу интерпретировать команды, данные на естественном языке.Одним из способов выполнения этих команд было бы создание огромного количества операторов if, которые превратились бы в восточные для каждой концепции.Мне было интересно, если есть способ получить указатель на функцию, имя которой хранится в виде строки.Каждый концепт может содержать строку, представляющую функцию, которую необходимо выполнить, если концепт присутствует в синтаксическом анализе.Таким образом, концепция уже знает, что делать.

1 Ответ

0 голосов
/ 26 апреля 2011

Это не так сложно. Я бы попытался (теоретически, конечно) реализовать одно из этих «возможных» решений:

  1. Это очень C ++: прочитать Создать экземпляр класса по имени? и создать класс для каждого "естественного" языка, убедиться, что эти классы являются производными от общего интерфейса, и каждый из у классов будет переопределенный метод, который будет обрабатывать определенное слово.

  2. Это больше C: Если вы не боитесь использовать разделяемые библиотеки, создайте разделяемую библиотеку со всеми функциями для нужных вам команд, убедитесь, что имя функции соответствует «словам», а затем просто загрузить конкретную функцию (слово), которую вы хотите использовать. Это даже проще, чем приведенное выше, так как вам не нужно знать все слова и требуется меньше обслуживания.

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...