从void *转换为指向struct C ++的指针

时间:2015-04-07 21:26:55

标签: struct casting pthreads parameter-passing void-pointers

我正在使用pthreads通过结构将多个参数传递给函数。我正在尝试使用从void *到struct thread_args *的转换来转换我传入的结构。这给了我一个错误。有人可以解释如何用C ++来管理它。

这是我的代码:

  struct thread_args
{
    int customer_num;
    int res_vector[NUMBER_OF_RESOURCES];
};

typedef struct thread_args theArgs;

int request_resources(int customer_num, int request[]);
int release_resources(int customer_num, int release[]);
void req_converter( void * x );
void rel_converter( void * x );

void req_converter( void * x )
{
    theArgs * args = dynamic_cast<theArgs *>(x); //(struct arg_struct *) x;
    request_resources( x.customer_num, x.res_vector);
}

我收到的错误消息是:

error: cannot dynamic_cast ‘x’ (of type ‘void*’) to type ‘theArgs* {aka struct thread_args*}’ (source is not a pointer to class)

有人可以解释使用pthreads将结构传递给一个函数的最佳方法,该函数将使用struct参数在C ++中调用带有多个参数的第二个函数吗?

0 个答案:

没有答案