我有這樣的代碼:獲得的C++列表迭代問題價值
struct sWindowInfo {
WNDPROC pPrevWndProc;
};
typedef std::list<sWindowInfo> windowsList;
和功能,它返回指向第一個窗口,信息結構的迭代器列表:
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);
運行時錯誤發生,我在調試器中看到奇怪的值。 我不明白,爲什麼?在我看來,這是相同的代碼。
你爲什麼使用指向迭代器的指針? – bitmask
顯示'windowGet()'的實現;你可能會返回一個臨時/本地對象的地址。 – ildjarn
爲什麼不能列表本身? –
Ajay