在.h和.cpp中实现pthread

时间:2014-12-17 12:11:16

标签: c++ visual-studio-2012 pthreads pthreads-win32

在pthreads中为pthread_create方法传递函数作为参数的常规方法是

pthread_create(&thread,NULL,func,(void*)arg)

而func()被声明/定义为

void* func(void* arg);

但是每当我想在visual studio 2012中的单独的.cpp中调用pthread_create时,就会出现以下错误,如图所示

The error in visual studio

但如果我定义函数static,则错误就会消失。

static void* func(void* arg);

有任何建议如何在不使其成为静态的情况下正确传递它吗?

1 个答案:

答案 0 :(得分:0)

错误消息表明AppendData_LinuxXMLParse类的成员函数,并且无法转换为指向普通(非成员)函数的指针pthread_create需要

这是解决方案:

class X {
   void* arg;
public:
   void* func() { ... }

   static void* thunk(void* self) {
     return reinterpret_cast<X*>(self)->func();
   }
};

X obj;
pthread_create(thread, NULL, &X::thunk, reinterpret_cast<void*>(&obj));