因此,如果您从 Void* 转换为 Type* 或从 Type* 转换为 Void*,您应该使用:
void func(void *p)
{
Params *params = static_cast<Params*>(p);
}
或
void func(void *p)
{
Params *params = reinterpret_cast<Params*>(p);
}
对我来说 static_cast 似乎更正确,但我已经看到两者用于同一目的。此外,转换的方向是否重要。即我是否仍应将 static_cast 用于:
_beginthread(func,0,static_cast<void*>(params)
我已经阅读了关于 C++ 样式转换的其他问题,但我仍然不确定这种情况下正确的方法是什么(我认为它是 static_cast)
最佳答案
您应该使用 static_cast 以便正确操作指针以指向正确的位置。但是,只有在首先使用静态转换将指针转换为 void* 时,才应该这样做。否则,您应该将 reinterpret_cast 转换为与原始指针完全相同的类型(没有基数等)。
关于c++ - 使用 C++ 样式转换从 Void* 转换为 TYPE* : static_cast or reinterpret_cast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3064509/