我试图创建这样的对象的空终止数组
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。我知道数组的创建有问题,因为如果我尝试使用我的for循环来打印所有生物的地址,它将永远打印。我知道我的指针逻辑有问题,对吗?
生物宣言是这个
Creature **creatures;
最佳答案
访问循环应为:
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();
}
关于c++ - C++ null终止的对象数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26941085/