Tôi đã đọc rất nhiều về việc đúc C++ và tôi bắt đầu bị lẫn lộn vì tôi luôn sử dụng tính năng đúc kiểu C.Bối rối trên C++ đúc
Tôi đã đọc rằng việc truyền kiểu C nên tránh trong C++ và reinterpret_cast rất nguy hiểm và không nên sử dụng bất cứ khi nào có thay thế. Ngược lại với việc không sử dụng reinterpret_cast, tôi đã thấy nó được sử dụng nhiều lần trên MSDN trong mã mẫu của họ. Điều này dẫn tôi đến câu hỏi đầu tiên của tôi, khi nào thì ok để sử dụng reinterpret_cast?
Ví dụ:
LRESULT CALLBACK WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_CREATE:
{
LPCREATESTRUCT lpCreateStruct = reinterpret_cast<LPCREATESTRUCT>(lParam);
return 0;
}
}
...
}
Nếu đó không phải là ok, sau đó thế nào tôi sẽ đúc giá trị LPARAM đến một con trỏ chỉ sử dụng tĩnh, năng động, và/hoặc const đúc?
Ngoài ra: Nếu reinterpret_cast là không di động, thế nào tôi sẽ viết lại nó để được cầm tay (đối với thực hành tốt)
Đây có thể là cơ sở mã cũ. –