Я искал это, но мне кажется, я просто запутался.
Что я пытаюсь сделать, сохранить указатель на функцию в объекте и сделать так, чтобы он вызывался позже в другом потоке.
Я имел в виду конструктор, который будет принимать указатель на функцию и параметры, которые будут переданы указателю на эту функцию. Этот объект также будет иметь метод 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;
}
Это в двух словах, что я пытаюсь сделать. Тем не менее, я не уверен, что это синтаксис или я тупой, но я не могу понять, как на самом деле это сделать и заставить его скомпилировать.
Thoughs? И спасибо за все советы до сих пор:)