Я сделал что-то, чтобы нарушить функциональность моей программы, но я не могу понять, что именно.Я определяю typedef в файле заголовка класса:
typedef boost::function<void(instr_ptr, std::vector<ResultBase*>) > GenFunction;
И внутри этого класса у меня есть два экземпляра:
GenFunction Gen;
GenFunction Kill
Я устанавливаю их следующим образом:
void DataFlowSolver::SetGenFunction(GenFunction &func)
{
Gen = func;
}
void DataFlowSolver::SetKillFunction(GenFunction &func)
{
Kill = func;
}
У меня есть другая функция в отдельном заголовочном файле:
void GenLiveVar(const instr_ptr instr, std::vector<ResultBase*> &list);
Я создаю экземпляр класса DataFlowSolver и пытаюсь назначить его следующим образом:
blockSolver.SetGenFunction(GenLiveVar);
ОднакоКомпилятор жалуется:
CFG.cc: 617: ошибка: нет соответствующей функции для вызова DataFlowSolver :: SetGenFunction (void (&) (instr_ptr, std :: vector> &)) 'DataFlowSolver.ч: 21: примечание: кандидаты: void DataFlowSolver :: SetGenFunction (GenFunction &)
Но это позволяет мне сделать это:
GenFunction fun = GenLiveVar;
blockSolver.SetGenFunction(fun);
У кого-либо есть идеи, что может быть не так?Я знаю, что это работало раньше, но я не уверен, как мне удалось это сломать ...