2012-05-07 187 views
0

我正在處理我的C++任務,並嘗試在我的程序中使用多態。在我的計劃,我想存儲在一個指針矢量某些對象的指針它們構造之後:將對象的指針直接存儲在指針向量中?

entities.push_back(&Invader4()); 
entities.push_back(&Invader3()); 
entities.push_back(&Invader2()); 
entities.push_back(&Invader1()); 
entities.push_back(&Invader0()); 

類侵略者繼承實體類,但是當我嘗試訪問該元素的實體,一個accesss衝突發生。我必須聲明另一個Invader類型矢量來先存儲這些對象嗎?

+0

發佈您的課程設計。 – tuxuday

回答

5

你正在接受一個臨時的地址,這是非法的(準確的未定義行爲)。只需動態分配內存:

entities.push_back(new Invader4()); 
entities.push_back(new Invader3()); 
entities.push_back(new Invader2()); 
entities.push_back(new Invader1()); 
entities.push_back(new Invader0()); 

不要忘記在完成後刪除向量中的內存。

另外,看看智能指針,在這裏可能更合適。

編輯:刪除,我的意思是

for (int i = 0 ; i < entities.size() ; i++) 
    delete entities[i]; 

當你與向量來完成。

+0

工程就像一個魅力!thx!並btw你是什麼意思刪除向量中的記憶?我可以離開它嗎? – Tony

+0

@tonyaziten不,你會得到內存泄漏。 –

+0

@tonyaziten見編輯。 –

相關問題