似乎无法将void *转换为c ++中的struct

时间:2016-03-23 02:51:30

标签: c++ struct

我有一个非常简单的方法,使用以下原型:

void *station_0(void* p1);

我这样称呼它:

product_record r;
pthread_create(thread, NULL, station_0, (void *)&r);

在这个方法中,我需要做的就是将p1强制转换为已定义的struct product_record,我目前正在我的方法中尝试这个:

product_record p = (product_record)p1

但编译器在该行(上图)上抱怨error: invalid conversion from 'void*' to 'int' [-fpermissive]

我根本不认为我理解这个警告。为什么我不能简单地将void*转换为我的结构?

1 个答案:

答案 0 :(得分:4)

您需要两个步骤 - 将void指针转换为product_record指针,然后取消引用它。这可以在

行中完成
product_record p = *(static_cast<product_record *>(p1));