※ 引述《Zoxge (Zoxge)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: Linux
: 問題(Question):
: 我的vector是 vector<ABC*> vVec;
^^^^
vVec 中的 element type 是 ABC*
[中略]
: setOS部份:
: vVec.at(i).setOS( &(vVec.at(j)) );
^
vVec.at(i) 是 ABC*
所以這邊應該是 -> 才對?
另外 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)) 取得的位址會失效
即便不是如此
ABC 這個 class 的結構也太異常了
就算沒這個 bug 也一定會有其它 bug 的
建議你把這個 class 中的功能儘量獨立出來
否則這種複雜的結構會讓你 debug 超級痛苦
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.78.231