[問題] vector push_back() 多個物件執行錯誤
各位高手們好,我想請問一下關於vector的問題
因為我在做的遊戲中會有怪物,之前我在測試時是用new的方式來創怪
int MONSTER_COUNT=3;
Enemy *monster[MONSTER_COUNT];
for( int i=0 ; i<MONSTER_COUNT ; ++i)
monster[i]=new Enemy("Ms_01.png",100,100)
//第二、三參數是座標
然後每隻怪物的動作我是這樣寫
for( int i=0 ; i<MONSTER_COUNT ; ++i)
monster[i]->action();
這樣子都沒有任何問題,可是假設第2隻死掉了,我要把第2隻給delete掉
但delete會把全部monster都刪掉,所以想說改成用vector來實做
不過一測試就遇到許多奇怪的問題
Enemy monster_temp("Ms_01.png",100,100);
vector<Enemy> monster;
monster.push_back(monster_temp);
for(vector<Enemy>::iterator iter = monster.begin();
iter != monster.end();
++iter)
iter->action();
我如果只有push_back一筆資料就會正常,怪物也可以draw出來
可是如果push_back兩筆怪物不知道為什麼會draw不出來
push_back三筆一執行就會當掉
想請問各位高手們是不是vector有什麼部份我沒有注意到的?
因為我用new的方式都會正常,可是改成vecotr就會出錯
讓我連一點頭緒都沒有,謝謝各位的幫忙
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.49.54
→
01/07 16:29, , 1F
01/07 16:29, 1F
→
01/07 16:31, , 2F
01/07 16:31, 2F
推
01/07 16:31, , 3F
01/07 16:31, 3F
→
01/07 16:34, , 4F
01/07 16:34, 4F
→
01/07 16:36, , 5F
01/07 16:36, 5F
→
01/07 16:36, , 6F
01/07 16:36, 6F
→
01/07 16:38, , 7F
01/07 16:38, 7F
→
01/07 17:38, , 8F
01/07 17:38, 8F
→
01/07 17:39, , 9F
01/07 17:39, 9F
各位講的專有名詞好多我都沒看過,真尷尬
可是可以請問一下為什麼要用operator=嗎?
謝謝各位
※ 編輯: yoll522 來自: 1.169.116.94 (01/07 17:40)
※ 編輯: yoll522 來自: 1.169.116.94 (01/07 17:42)
推
01/07 18:08, , 10F
01/07 18:08, 10F
→
01/07 18:08, , 11F
01/07 18:08, 11F
→
01/07 18:09, , 12F
01/07 18:09, 12F
→
01/07 18:10, , 13F
01/07 18:10, 13F
→
01/07 18:10, , 14F
01/07 18:10, 14F
感謝你的說明
不過vector在copy過去的時候會執行operator=或copy ctor
意思是他在copy時會兩種都有可能會執行嗎?
※ 編輯: yoll522 來自: 1.169.116.94 (01/07 19:22)
→
01/07 20:26, , 15F
01/07 20:26, 15F
→
01/08 21:36, , 16F
01/08 21:36, 16F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章