У меня есть такой код:
struct sWindowInfo {
WNDPROC pPrevWndProc;
};
typedef std::list<sWindowInfo> windowsList;
И функция, которая возвращает указатель на итератор первой структуры window-info в списке:
windowsList::const_iterator* windowGet();
Код вроде этого работает нормально:
if (windowsList::const_iterator* itr = windowGet())
{
WNDPROC wndProc = (*itr)->pPrevWndProc;
return CallWindowProc(wndProc, hWnd, msg, wParam, lParam);
}
Но если я попробую:
if (windowsList::const_iterator* itr = windowGet())
return CallWindowProc((*itr)->pPrevWndProc, hWnd, msg, wParam, lParam);
Произошла ошибка во время выполнения, и я вижу странные значения в отладчике.
Я не понимаю, почему? На мой взгляд, это идентичный код.