Я искал это, но думаю, что просто запутываю себя.
То, что я пытаюсь сделать, сохранить указатель на функцию в объекте и вызвать его позже в другом нить.
Я представлял себе конструктор, который будет принимать указатель на функцию и параметры, которые будут переданы этому указателю на функцию. Этот объект также будет иметь метод run (), который будет запускать указанный указатель на функцию, и метод wait_until_completed (), который блокируется до тех пор, пока функция не будет запущена.
Указатель на функцию должен быть функцией другого объекта, если это имеет смысл. Например
Foo::*Bar(int);
У меня есть wait_until_completed (), работающий с pthread_cond_t, но я застрял на этой штуке с указателем на функцию и чувствую, что просто бегаю по кругу.
Любой совет?
РЕДАКТИРОВАТЬ: Это для школы ( любое мое общее понимание), поэтому сторонние библиотеки не будут работать: /
Мне показалось, что я очень плохо объяснил это, чтобы дать мне пример кода (исключая все синхронизирующие вещи)
class Foo
{
public:
Foo(void (Bar::*function) (int), int function_param)
{
// Save the function pointer into this object
this->function = &function;
// Save the paramater to be passed to the function pointer in this object
param = function_param;
}
run()
{
(*function)(param);
}
private:
// The function pointer
void (Bar::*function) (int) = NULL;
// The paramater to pass the function pointer
int param;
}
Это в двух словах что я пытаюсь сделать. Однако я не уверен, что это из-за синтаксиса или я глуп, но я не могу понять, как на самом деле это сделать и заставить его скомпилировать.
Мысли? И спасибо за все советы: )