Можно ли сохранить функцию (указатель?) В объект?

Я искал это, но думаю, что просто запутываю себя.

То, что я пытаюсь сделать, сохранить указатель на функцию в объекте и вызвать его позже в другом нить.

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

Это в двух словах что я пытаюсь сделать. Однако я не уверен, что это из-за синтаксиса или я глуп, но я не могу понять, как на самом деле это сделать и заставить его скомпилировать.

Мысли? И спасибо за все советы: )

5
задан Edward Strange 2 February 2011 в 22:43
поделиться