POSIX(C ++)参数类型不匹配

时间:2017-05-04 09:57:25

标签: c++ multithreading posix

我有一个名为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*)

1 个答案:

答案 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调用。