我有一个名为race的函数,Fleet * object作为参数:
void* race(Fleet* fleet){
//some code here
}
和另一个posix线程参数:
vector<Fleet*> allfleet; //value has been passed/stored, ignore
pthread_create(&t[i],NULL,race,allfleet.at(i));
但是pthread_create行中的race参数出现错误
error: Incompatible function parameter type "void *" and "fleet*"
我尝试了一切,转换,投射,没有任何作用。
注意:不存在其他错误,只是类型不匹配
编辑:
似乎签名需要
void* function (void*)
但是比赛是
void* fuction (Fleet*)
答案 0 :(得分:2)
pthread_create
call requires void *(*start_routine) (void *)
argument。您的功能与它不兼容。尝试:
void* race(void* data) {
Fleet* fleet = (Fleet*)data;
//some code here
};
如果您使用的是C ++ 11,我建议使用std::thread而不是pthread调用。