我使用类型
之类的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
答案 0 :(得分:4)
runner
返回void
,而不是返回ThreadFunc
以匹配start
的签名。
答案 1 :(得分:3)
ThreadFunc runner( void *job )
实际上不是ThreadFunc
,而是函数返回ThreadFunc
。编译器基本上会告诉你。
如果将函数声明为
,它应该有效void runner( void *job )