RegisterFunction ("run", Run)
- правильный метод.Какую ошибку вы получаете, используя это?
Я подозреваю, что проблема не в том, как вы вызываете RegisterFunction, а в том, как вы ее определяете.Вы даете нам это:
RegisterFunction (string name, FunctionPointer function).
, но пропускаете декларацию FunctionPointer
.Это должно быть определено что-то вроде:
typedef void (*FunctionPointer)()
Предполагая, что Run
определено как:
void Run();
Обратите внимание, что для этого нужно, Все из функций, которые вы используете с RegisterFunction
, должна иметь одинаковую подпись.
ОБНОВЛЕНИЕ: Судя по сообщению об ошибке, которое вы предоставили в комментарии, проблема заключается в том, что у вас более одной функции «Выполнить»,и компилятор не знает, какой из них вы хотите передать.(К сожалению, я не уверен, как вы это поясните, поэтому вы можете переименовать одну из них)
Одна вещь, которую вы можете попробовать:
RegisterFunction (std::string("run"), Run);
Учитывая точноесоответствует первому параметру; возможно, можно выбрать, какую Run
функцию, на основе которой будет соответствовать подпись в FunctionPointer
.
ОБНОВЛЕНИЕ2: Вам нужно либо сделать Parser :: Run () статическимфункция, это изменение объявления FunctionPointer на:
typedef CVariable (Parser::*FunctionPointer) (std::string);