作者laihungzen (EricLai)
看板C_and_CPP
標題[問題] vector iterators incompatible
時間Sun May 29 11:55:20 2016
開發平台(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