看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《littleshan (我要加入劍道社!)》之銘言: : ※ 引述《Zoxge (Zoxge)》之銘言: : : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : : Linux : : 問題(Question): : : 我的vector是 vector<ABC*> vVec; : ^^^^ : vVec 中的 element type 是 ABC* : [中略] 啊~的確是ABC才對,抱歉打錯了 : : setOS部份: : : vVec.at(i).setOS( &(vVec.at(j)) ); : ^ : vVec.at(i) 是 ABC* : 所以這邊應該是 -> 才對? 但我用 -> ,compile時就會有error了 用 . ,則沒有錯 : 另外 setOS 的參數吃的是 ABC* : 但你給他的會是 ABC** : : setIS部份: : : ABC* s = &(vVec.at(i)); : 同樣的 : &(vVec.at(i)) 的型別為 ABC** : : for(int k=0; k<s->ossize(); k++) : : { : : s->os(k)->setIS(s); : : } : 感覺 vVec 似乎應該是 vector<ABC> : 如果真的是這樣 : 那你的麻煩就很大了 : 因為你在塞資料進 vector 時會產生 reallocation : 所以用 &(vVec.at(i)) 取得的位址會失效 reallocaton是什麼?? 那為什麼我在另外添加元素使capacity改變之前,資料存取都不會有問題呢? : 即便不是如此 : ABC 這個 class 的結構也太異常了 異常是指?? : 就算沒這個 bug 也一定會有其它 bug 的 : 建議你把這個 class 中的功能儘量獨立出來 : 否則這種複雜的結構會讓你 debug 超級痛苦 功能獨立出來是指不要用 繼承 或 多型 嗎?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.29.203
james732:可以的話我真的很希望你用置底連結把完整程式貼出來 08/16 23:21
firejox:我懷疑可以new出vector... 08/16 23:31