我正在尝试创建一个像这样的空终止对象数组
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;
最佳答案
您的 creature
是指向 Creature
的指针。如果增加此指针,您将指向当前指向的生物后面的下一个 Creature
,而不是表中的下一个指针。
使用:
for (int i=0; creatures[i]!=nullptr; i++) {
creatures[i]->travel();
}
关于C++ 空终止对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26941085/