我已经找到了这个,但我想我只是让自己更困惑。是否可以将一个函数(指针?)保存到一个对象中?
我想要做的事情是保存一个对象中的函数指针,并让它在稍后的另一个线程中被调用。
我一直在想象的是一个构造函数,它会带一个函数指针和传递给这个函数指针的参数。这个对象还有一个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;
}
这是简而言之,我想要做的。然而,即时通讯不知道,如果它是一种语法的东西或我是愚蠢的,但我不知道如何实际做到这一点,并得到它编译。
虽然?并感谢迄今为止所有的建议:)
仅供参考:关于[命令模式](http://en.wikipedia.org/wiki/Command_pattern)的一般维基百科,以及[C++特定论述](http://www.dreamincode.net /论坛/主题/ 38412-的命令图案C /)。 – 2011-02-02 22:01:16
我不怀疑洛基会更好,但是这是一个学校任务,主要是我只是想弄清楚这是如何工作:(感谢信息,但我会保持洛基在脑海中,当我做任何我的个人项目! – vimalloc 2011-02-02 22:12:35