看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VS2010 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 在執行到Class B上的 取得Class A的m_WorkingList 會出現 vector iterators incompatible的錯誤 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) typedef struct _Working_List { std::wstring RowNo; std::wstring Name; }Working_List; //-----class A-----// std::vector<Working_List> m_WorkingList; void A::InsertList() { for(...) { Working_List list; list.RowNo = L""; list.Name = L""; m_WorkingList.push_back(list); } } const std::vector<Working_List>& A::GetWorkingList() const { return m_WorkingList; } //------Class B------// std::vector<Working_List> list = A->GetWorkingList(); 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.117.32 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1464494125.A.B89.html
LPH66: 你後續對 list 的操作有什麼? 05/29 12:07
LPH66: 基本上這個錯誤常見原因是在不同的 vector 上取得 iterator 05/29 12:07
LPH66: 之所以會是不同的 vector 的原因常見是有意/無意的複製 05/29 12:08
LPH66: 但你寫的這段程式裡的複製只有取得 A 之後指定給 list 而已 05/29 12:08
LPH66: 單單複製還不足以造成這問題, 要使用其 iterator 才會 05/29 12:09
LPH66: 所以問題很可能在你對 list 的後續操作 05/29 12:09
laihungzen: 目前就是只要執行到GetWorkingList 就會出現錯誤了 05/29 12:20
laihungzen: 有點百思不得其解... 05/29 12:20