[英]c++ null terminated array of objects
我試圖創建這樣的對象的空終止數組
void Game::createCreatures(int numCreatures) {
creatures = new Creature *[numCreatures + 1];
for (int i = 0; i <= numCreatures; i++) {
if(i < numCreatures) {
creatures[i] = new Runner(maze);
} else creatures[i] = NULL;
}
}
然后像這樣訪問它們
for (Creature *creature = creatures[0]; creature != NULL; creature++) {
creature->travel();
}
我到底在做什么錯? 嘗試“旅行”該生物時,我收到EXC_BAD_ACCESS。 我知道數組的創建有問題,因為如果我嘗試使用訪問循環來打印所有生物的地址,它將永遠打印。 我知道我的指針邏輯有問題,對嗎?
生物宣言是這個
Creature **creatures;
你的creature
是一個指向一個Creature
。 如果增加該指針,則將指向當前指向的指針之后的下一個Creature
,而不是指向表中的下一個指針。
采用:
for (int i=0; creatures[i]!=nullptr; i++) {
creatures[i]->travel();
}
訪問循環應為:
for (int i = 0; creatures[i] != NULL; i++) {
Creature *creature = creatures[i];
creature->travel();
}
您的循環將creatures[0]
視為生物的數組,但這只是一個生物。
如果要使用指針算術進行循環,則應為:
for (Creature **creature = &creatures[0]; *c != NULL; c++) {
(*creature)->travel();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.