Rob*_*boy 7 c++ casting static-cast reinterpret-cast
因此,如果您从Void*转换为Type*或从Type*转换为Void*,您应该使用:
void func(void *p)
{
Params *params = static_cast<Params*>(p);
}
Run Code Online (Sandbox Code Playgroud)
要么
void func(void *p)
{
Params *params = reinterpret_cast<Params*>(p);
}
Run Code Online (Sandbox Code Playgroud)
对我来说static_cast似乎更正确,但我看到两者都用于同一目的.此外,转换的方向是否重要.即我还应该使用static_cast:
_beginthread(func,0,static_cast<void*>(params)
Run Code Online (Sandbox Code Playgroud)
我已经阅读了关于C++样式转换的其他问题但是我仍然不确定这个场景的正确方法是什么(我认为它是static_cast)
您应该使用static_cast,以便正确操作指针以指向正确的位置.但是,如果您使用静态强制转换将指针强制转换为void*,则应该只执行此操作.否则你应该reinterpret_cast到完全相同类型的原始指针(没有基础或类似).