我有一个非常简单的方法,使用以下原型:
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*
转换为我的结构?
答案 0 :(得分:4)
您需要两个步骤 - 将void指针转换为product_record
指针,然后取消引用它。这可以在
product_record p = *(static_cast<product_record *>(p1));