Я много читал о С++ casting, и я начинаю запутываться, потому что я всегда использовал 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;
}
}
...
}
Если это не так, то как мне присвоить значение LPARAM указателю, используя только статическое, динамическое и/или const-литье?
Также: Если reinterpret_cast не переносится, как бы я переписал его для переносимости (для хорошей практики)