我一直在阅读很多关于C++的铸造,我开始感到困惑,因为我一直使用C风格铸造。混淆C++铸造
我已经读过C风格的铸造应该避免在C++中,并reinterpret_cast是非常非常危险的,不应该有任何替代时使用。与不使用reinterpret_cast相反,我已经在他们的示例代码中看到了它在MSDN上多次使用。这让我问我的第一个问题,什么时候可以使用reinterpret_cast?
例如:
LRESULT CALLBACK WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_CREATE:
{
LPCREATESTRUCT lpCreateStruct = reinterpret_cast<LPCREATESTRUCT>(lParam);
return 0;
}
}
...
}
如果这也不行,那我将如何只使用静态,动态和/或const铸造LPARAM值转换为指针?
另外:如果reinterpret_cast的是不可移植的,我怎么会重写它是便携式的(良好做法)
这可能是非常旧的代码库。 – 2010-02-27 00:50:48