我一直在閱讀很多關於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