Вызов boost :: function через boost :: function_base - PullRequest
1 голос
/ 12 сентября 2010

У меня есть unordered_map функций, которые должны вызываться для объекта при синтаксическом анализе файла XML.
Я обнаружил, что boost :: function имеет базовый класс с именем boost :: function_base, однако, как и ожидалось, я не могу вызватьэто потому, что у меня нет сигнатуры функции.
Поскольку все эти функции являются установочными функциями, я могу гарантировать, что они возвращают void и имеют только один параметр неизвестного типа.
Есть ли лучший способразрешить тип other, а не ветвь if-else-if, которую я пытаюсь избежать?

Ответы [ 2 ]

2 голосов
/ 12 сентября 2010

Использование Boost :: вариант - лучший путь.Как вообще можно вызвать функцию с неизвестным типом параметра?

0 голосов
/ 12 сентября 2010

boost::function предназначен только для полиморфизма времени компиляции.Почему бы вам просто не использовать обычный указатель на функцию?Т.е.

typedef void (*function_type)(void *);
...