1
我捧在列表中的某些物體,如刪除這一個:從列表保存對象指針
list<CWorm*> wormList;
我把蟲這份名單上,在其構造:
CWorm::CWorm(list<CWorm*>& list, [...]) {
list.push_back(this);
在主循環中,我執行一些事件對他們來說,這一點:
for(itt = wormList.begin(); itt != wormList.end(); itt++) {
if((*itt) != NULL) (*itt)->someEventBlabla();
}
這裏去我的問題: 何我是否有效地將它們從列表中刪除。當他們死了,我想從列表中「清除」他們(在主循環,檢查變量之後),但它是給沒有可引用的迭代器的錯誤。 當我嘗試從列表中「刪除」他們(在對象中,由主循環執行的事件)有那麼在此行的arror:
if((*itt) != NULL) (*itt)->someEventBlabla();
我試圖刪除它們像這樣:
wormList.remove(this)
從對象事件,與wormList聲明爲extern。
如何刪除它們,留下空白的下一個對象?
請出示編寫您嘗試使用刪除的項目,以便人們可以告訴你如何糾正它。 – Mat
這種設計非常可怕。指針沒有所有權的概念,甚至你自己的代碼有沒有知道什麼那些'CWorm'對象的壽命的方法。這是對的,因爲對象不應該關心誰擁有它。但結果是根本不使用裸指針。 –
我試圖刪除它們,如下所示: wormList.remove(this) 來自對象事件,其中wormList聲明爲extern。 要回答這個評論:「這種設計是悍然可怕......」我知道了。我只是在做一些C++項目,這是我第一次做的事情「做大」 :) – Saus