函数指针typedef错误

时间:2012-06-10 08:41:25

标签: c++ multithreading function function-pointers

我使用类型

之类的typedef定义了我的Function指针
typedef void (*ThreadFunc)( void *);

我的Class成员方法如下:

 void start( ThreadFunc f, vector<void *> &jobs)

在我的主程序中我编写了一个函数:

 ThreadFunc runner( void *job )
 {
  printf("->> %p\n", job);
 };

并希望运行成员函数 所以我试过了:

r.start( runner, jobs);

编译器说:

main.cc:27: Fehler: ungültige Umwandlung von »void (* (*)(void*))(void*)« in »void (*)(void*)«
main.cc:27: Fehler:   Argument 1 von »void Thread::start(void (*)(void*), std::vector<void*, std::allocator<void*> >&)« wird initialisiert

希望有人能帮助我简短:) greetz

2 个答案:

答案 0 :(得分:4)

需要声明

runner返回void,而不是返回ThreadFunc以匹配start的签名。

答案 1 :(得分:3)

ThreadFunc runner( void *job )

实际上不是ThreadFunc,而是函数返回ThreadFunc 。编译器基本上会告诉你。

如果将函数声明为

,它应该有效
void runner( void *job )